【发布时间】:2012-09-04 10:25:08
【问题描述】:
我正在尝试创建一个宏来替换函数定义。这个宏应该在某个数组中注册函数的名称,以便其他宏可以对数组的元素做一些事情。
我想这样做以获得可以在控制台中使用的函数列表,而无需在添加新函数时编辑列表(实际上是多个列表)。
在阅读了一些内容后,我查看了 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 的预编译器的 SLOT,但我认为一旦设置,我也无法更改其中的变量。
除了编写我自己的预处理器之外,还有其他方法吗?不是,学习如何写一个好的开始是什么? (将 MinGW 与 Code::Blocks 一起使用)。
【问题讨论】:
-
我确信有一些易于维护的方法可以在不使用预处理器的情况下解决您的问题。为什么不描述问题?
标签: c++ gcc boost-preprocessor