可能的重复:
C 预处理器:在#define 中使用#if? https://stackoverflow.com/questions/2831934/c-preprocessor-using-if-inside-define
有什么技巧可以在定义的 rhs 中包含预处理器指令吗?问题是,预处理器将所有 rhs 折叠成一长行。但也许有一个窍门?
我想要的 rhs 的例子是
#define MY_CHECK \
#ifndef MY_DEF \
# error MY_DEF not defined \
#endif
?
其目的是一个缺点:拥有单行快捷方式,而不是多行检查序列。
正如其他人所指出的,预处理器宏不能扩展为任何其他预处理器指令;如果这样做,您通常会收到有关输入中杂散“#”字符的奇怪错误。然而,有时你可以做一些事情来获得你想要的东西。如果您想要一个扩展为以下内容的宏:
#ifdef SOMETHING
...some code...
#endif
where 一些代码不包含任何预处理器指令,您可以定义一个 IFDEF 宏:
#ifdef SOMETHING
#define IFDEF_SOMETHING(X) X
#else
#define IFDEF_SOMETHING(X)
#endif
然后使用IFDEF_SOMETHING(...some code...)
在你的另一个宏中。
如果您有一堆想要重复多次的预处理器废品,您可以将其粘贴到自己的文件中,然后使用#include "stuff"
在您需要的每个地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)