
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
На заметку программистам:
Теперь если нам надо редактировать перечисление, то мы редактируем один раз и в одном месте. Надо добавить новый элемент, например element_new = 56, добавляем
И не паримся о правки функции get_enumqq_array(). Техника называется X Macro https://en.wikipedia.org/wiki/X_Macro. При желании разработчиков, легко можно допилить стандартные перечисления подобным образом.
Может не очевидно сразу, перечисление получилось таким:
Классно! Про X Macro не знал, спасибо! Я вот только по коду не понимаю, почему не возникает ошибки из-за запятой в конце определения ENUM_QQ_HELPER. После последнего элемента при задании enum или array не должно быть запятой. Но компилятор почему-то не не ругается на нее.
Попробовал
не ругается. И размер массива (enum), как надо. Прикольно! Вроде, и баг, но пусть лучше будет такая багофича. Действительно, с ней удобно.
Ну это законное нарушение, специально для всяких подобных "штучек", видимо. Не волнуйтесь по этому поводу, это и в C/C++ не ошибка.
ЗЫ: в C++ стандарте на тему инициализации:
braced-init-list:
{initializer-list , opt}
{ }
Т.е. запятая в конце braced-init-list узаконена на самом высоком уровне.
Т.е. запятая в конце braced-init-list узаконена на самом высоком уровне.
На заметку программистам:
А как быть с нормальными именами которые в комментах?
А как быть с нормальными именами которые в комментах?
А как быть с нормальными именами которые в комментах?
Да, вставить комментарий не выходит. Неудачный синтаксис для комментирования перечислений.
Можно пример enum-а, о котором идет речь?
Да, вставить комментарий не выходит. Неудачный синтаксис для комментирования перечислений.
Заключайте его в /*...*/.
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
Тут ерунда такая, что препроцессор не хочет кушать комментарии (оба // и /*), не ожидает увидеть их при раскрытии макросов. Либо изменять правила для препроцессора, либо вводить альтернативный способ комментирования перечислений (комментарий отобразится при запуске скрипта в настройках), например так:
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
Обработка препроцессором происходит в несколько этапов. Вначале из исходника удаляются все комментарии и этот результат идёт на обработку. И вот там то препроцессор не ожидает встретить комментарий (когда будет раскрывать макросы). Встречу расценивает как ошибку. Например вот:
Безобидный код на первый взгляд, должен вставить комментарий. Но скомпилировать не выйдет.