【发布时间】:2017-04-18 06:50:44
【问题描述】:
是否可以在 C 中的宏函数内实现宏条件。像这样:
#define fun(x)
#if x==0
fun1;
#else
fun2;
#endif
#define fun1 // do something here
#define fun2 // do something else here
换句话说,预处理器根据参数值决定使用哪个宏。
fun(0) // fun1 is "preprocessed"
fun(1) // fun2 is "preprocessed"
我知道这个例子行不通,但我想知道是否有可能让它以某种方式工作?
M.
【问题讨论】:
-
预处理器“修改”代码甚至在编译之前,所以在运行时肯定会解决。
-
是的,我知道。但是
x不是变量,它的值在编译之前就知道了。 -
BOOST_PP_IF(或 IIF)
-
我认为这是不可能的。 C 预处理器的功能非常有限。我喜欢使用非常强大的 GNU m4。不幸的是,它的开发以某种方式卡住了,我不知道未来的版本(如果有的话)。使用 cpp,我只需像您一样定义一个值
x,但将条件指令放在宏之外。
标签: c macros conditional c-preprocessor