【发布时间】:2012-11-22 14:35:35
【问题描述】:
如果定义了两个宏中的任何一个,我想要包含一段代码
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
如何在 C 中实现这一点?
【问题讨论】:
标签: c macros conditional-compilation
如果定义了两个宏中的任何一个,我想要包含一段代码
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
如何在 C 中实现这一点?
【问题讨论】:
标签: c macros conditional-compilation
除了#ifdef,预处理器还支持更通用的#if指令;实际上,#ifdef MACRO 是#if defined(MACRO) 的快捷方式,其中defined 是“预处理器函数”,如果定义了宏,则返回1;所以,你可以这样做:
#if defined(MACRO1) || defined(MACRO2)
void foo()
{
}
#endif
【讨论】:
#if defined(MACRO1) || defined(MACRO2)
【讨论】:
如果需要,这里是 NOT 版本:
#if !defined(MACRO1) && !defined(MACRO2)
...
#endif
【讨论】:
#if defined(Macro 1) + defined(Macro 2) == 1
<Code>
#endif
【讨论】: