【发布时间】:2012-12-21 22:28:45
【问题描述】:
我想拥有一个宏缩短器。
宏,FOO(A,B,C) 应该扩展为
defined(_FOO_A) || defined(_FOO_B) || defined(_FOO_C).
在 GCC 中是否可以使用可变参数宏参数而不是实际编写 3 个函数(FOO(A)、FOO(A,B)、FOO(A,B,C))?
【问题讨论】:
-
以两个下划线或一个下划线和一个大写字母开头的标识符保留供语言实现使用。
-
通常情况下,我会说编写一个遍历参数并检查每个定义的循环......但是,如果在预处理器指令的上下文中使用定义,那就不行了。
-
您提供的代码是您在一般情况下想要的示例,还是您需要该宏?
-
@CarlNorum:我同意。我只是提供了它作为示例并区分 FOO 和 _FOO。
标签: c gcc c-preprocessor c99 variadic-macros