c - C/C++ 中的单行 #ifdef

标签 c c-preprocessor preprocessor

考虑以下简单的 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/

相关文章:

c - 使用自修改代码观察 x86 上的陈旧指令提取

c++ - #ifdef 与 #if - 作为启用/禁用特定代码部分编译的方法,哪个更好/更安全?

c - 定义宏时使用逗号运算符

c++ - 用前导零进行字符串化

Java:如何在注释处理器和另一个项目之间进行通信?

c - 如何修复 scanf 中的 %ms 警告

c - Texas Instrument CLA float 反转技巧 - 它的目的是什么

c++ - 意外#else

c++ - #define 和#include 编译顺序

c - 显示字符ASCII码及出现次数