在 #ifdef 中使用 OR

3

我认为您可以添加代码,只有在同时声明2个术语的情况下才会执行:

#ifdef X
#ifdef Y

//code to execute

#endif
#endif

我想知道是否有一种方法可以在至少声明了X或者Y(考虑异或)的情况下执行代码,类似于以下内容:
#ifdef X or #ifdef Y

// code

#endif

?


如果需要的话,您可以忽略括号:#if defined X || defined Y,但不要忘记 endif - Grijesh Chauhan
4个回答

18

使用 defined

#if defined(X) || defined(Y)

2
所以我发现,我甚至可以使用 ^ 来表示异或。 - kaspersky
有趣,不知道这个,感谢你的发现。 - Eli Iser
@ gg.kaspersky 这可能是因为 defined(X) 将扩展为整数1或0,因此在这里任何与整数类型一起使用的运算符都可以工作。您甚至可以执行 #if defined(X) + defined(Y) 以获得“或”效果。 - Rapptz

3
您可以像这样使用operator||
#if defined(X) || defined(Y)

1
你可以使用以下方法来实现:
#if defined(X) || defined(Y)
...
#endif

0

你需要说:

#if defined(X) || defined(Y)

以下两个表单是等价的:

#ifdef identifier
#if defined identifier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接