Я пытаюсь создать макрос для замены определения функции. Этот макрос должен прописать имя функции в каком-то массиве, чтобы какой-то другой макрос мог что-то сделать с элементами массива.
Я хотел бы сделать это, чтобы иметь список функций, которые можно использовать в консоли, без необходимости редактировать список всякий раз, когда я добавляю новую функцию (на самом деле это несколько списков).
Немного почитав, я взглянул на препроцессор boost. К сожалению, похоже, что нет способа «сохранить» новый массив. Я хотел бы сделать что-то вроде этого:
#define SOME_ARRAY (0, ())
#define CONSOLE_COMMAND(a) \
#redefine SOME_ARRAY BOOST_PP_ARRAY_PUSH_BACK(SOME_ARRAY, #a) \
void a(some_arguments)
К сожалению, насколько мне известно, redefine не существует, и #define нельзя использовать в макросе (пожалуйста, поправьте меня, если я ошибаюсь).
Я взглянул на слоты прекомпилятора boost, но я не думаю, что смогу изменить переменную в нем после установки.
Есть ли способ сделать это, кроме написания собственного препроцессора? Не так ли, что было бы хорошим началом в обучении написанию одного? (Используя MinGW с Code::Blocks).