考虑以下简单的 C/C++ 示例:
#define FOO
...
#ifdef FOO
bar++;
#endif
好的,现在为了代码可读性,我想把那个(和任何其他类似的)条件放到一行中(代码有几十个单行语句,每个语句都需要有条件的取决于 不同的 定义)。使用时看起来像这样的东西:#define FOO
...
MY_IFDEF(FOO,bar++;) //Single-line conditional
目标是拥有一个可重用的宏,它可以接受任意标识符,如果该标识符之前已被 #define-d 编译,则编译语句,并在一行中完成所有操作。有任何想法吗?
UPDATE0:代码必须为 C 和 C++ 编译
最佳答案
您不能使用 #ifdef
在扩展宏时,但您可以完全预先检查它并在不满足条件时声明空语句。
#ifdef FOO
#define MY_IFDEF(x,y) some-processing-you-need
#else
#define MY_IFDEF(x,y) ;
#endif
还可以查看 C++ 的新特性:constexpr
这也可以使用。
关于c - C/C++ 中的单行 #ifdef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67951687/