【发布时间】:2014-10-09 19:41:25
【问题描述】:
我想要一个宏序列来替换下面的代码
#ifdef FOO
return true;
#else
return false;
#endif
类似的东西
return MAGICLY_EXPANDING_IFDEFINED_MACRO(FOO);
你可以猜到,有很多 FOO,足以将 4 行缩减为 1 行就很酷了。但实际上它会用一行替换一个怪物 switch 语句。
【问题讨论】:
-
FOO是否在某处未定义(并重新定义)? -
FOO未定义,或者已使用简单的#define FOO设置。 (这是一个编译选项。) -
该问题同时标记为 c 和 c++。您使用哪种语言?
-
C++,虽然对于预处理器,我认为这个文件没有任何特别的 C++ 特性。所以我认为 C 大师会有同样好的答案。
-
无法在#ifdef/#if defined 中使用不存在的符号
标签: c++ c macros c-preprocessor