【发布时间】:2021-08-29 06:20:12
【问题描述】:
考虑以下简单的 C/C++ 示例:
#define FOO
...
#ifdef FOO
bar++;
#endif
好的,现在我想为了代码可读性将那个(和任何其他类似的)条件放入一行中(代码有数十个单行语句,每个语句都需要有条件,具体取决于 不同 定义)。使用时的样子:
#define FOO
...
MY_IFDEF(FOO,bar++;) //Single-line conditional
我们的目标是拥有一个可重用的宏,它可以采用任意标识符,如果该标识符先前已被#define-d 编译,则编译语句,并在一行中完成所有操作。
有什么想法吗?
UPDATE0:代码必须为 C 和 C++ 编译
【问题讨论】:
-
我不认为你可以将宏扩展为
#ifdefs;不扫描扩展以查找条件。 -
你可以在if条件下创建函数并匹配宏的对应值,如果为真则为所欲为
-
除非询问语言之间的差异或交互,否则不要同时标记 C 和 C++。如果您想要两种语言的答案,您可以提出单独的问题。选择一个标签并删除另一个。
-
看来你不知道
#undef
标签: c c-preprocessor preprocessor