Так или иначе зарегистрируйте мои классы в списке

Можно также установить переменную среды LESS

, я использую LESS=-Ri, так, чтобы я мог накачать цветной вывод от grep в нее, и поддерживать последовательности цвета ANSI.

Еще небольшая использованная функция меньше, что я нашел, запускает его с +F как аргумент (или поражает SHIFT + F в то время как в меньше). Это заставляет его следовать за файлом, который Вы открыли, таким же образом это tail -f <file> будет. Очень удобный, если Вы наблюдаете файлы журнала из приложения и, вероятно, захотите разбить на страницы, создают резервную копию (если оно генерирует 100 строк входа каждую секунду, например).

6
задан Brian Tompsett - 汤莱恩 9 June 2016 в 16:27
поделиться

2 ответа

Вот метод помещения имен классов в вектор. Оставьте комментарий, если я упустил важные детали. Однако я не думаю, что это сработает для шаблонов.

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; }
9
ответ дан 17 December 2019 в 00:11
поделиться

Используйте boost :: mpl, vector или map.

-2
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: