Можно также установить переменную среды LESS
, я использую LESS=-Ri
, так, чтобы я мог накачать цветной вывод от grep
в нее, и поддерживать последовательности цвета ANSI.
Еще небольшая использованная функция меньше, что я нашел, запускает его с +F
как аргумент (или поражает SHIFT + F в то время как в меньше). Это заставляет его следовать за файлом, который Вы открыли, таким же образом это tail -f <file>
будет. Очень удобный, если Вы наблюдаете файлы журнала из приложения и, вероятно, захотите разбить на страницы, создают резервную копию (если оно генерирует 100 строк входа каждую секунду, например).
Вот метод помещения имен классов в вектор. Оставьте комментарий, если я упустил важные детали. Однако я не думаю, что это сработает для шаблонов.
struct MyClasses {
static vector<string> myclasses;
MyClasses(string name) { myclasses.push_back(name); }
};
#define REGISTER_CLASS(cls) static MyClasses myclass_##cls(#cls);
struct XYZ {
};
REGISTER_CLASS(XYZ);
Хитрость здесь заключается в том, чтобы произвести некоторые вычисления до вызова main (), и вы можете добиться этого с помощью глобальной инициализации. REGISTER_CLASS (cls) фактически генерирует код для вызова конструктора MyClasses при запуске программы.
ОБНОВЛЕНИЕ : Следуя предложению gf, вы можете написать следующее:
#define REGISTER_CLASS(cls) temp_##cls; static MyClasses myclass_##cls(#cls); class cls
class REGISTER_CLASS(XYZ) { int x, y, z; }