【发布时间】:2013-10-30 11:28:25
【问题描述】:
如果定义类似于 MACRO(name, seq) 并且代码如下,如何访问宏中的每个元素:
MACRO("TheName",
(Elem1)
(Elem2)
(Elem3)
)
我要生成下一个代码:
MACRO("TheName",
ELEMMACRO(Elem1)
ELEMMACRO(Elem2)
ELEMMACRO(Elem3)
)
或者类似的东西。换句话说,我想分别处理每个参数(我不在乎定义,即使它会像
MACRO("TheName",
Elem1,
Elem2,
Elem3
)
元素可能更多,也可能更少。我试过__V_ARGS__(我只需要gcc),但我只能复制所有元素,不能单独处理。
我能做什么?
附:由于某些原因,我无法使用 Boost。
【问题讨论】:
-
可以使用c++11的特性吗?如果是这样,您也许可以在使用新的可变参数模板功能后实现您的目标
-
@benjymous,实际上,不,因为 GCC 对 C++11 的支持仍处于试验阶段。
标签: c++ qt macros c-preprocessor variadic-macros