2012-03-13 114 views
185

对不起,提出非常基本的问题。我想在#ifdef指令中设置OR条件。 如何做到这一点? 我试图如何在OR条件下使用#ifdef?

#ifdef LINUX | ANDROID 
... 
.. 
#endif 

它没有工作?什么是正确的方法?

+7

|'为“或”在C条件语句也一样,你就错了。 – 2015-09-25 01:00:41

回答

418

像这样

#if defined(LINUX) || defined(ANDROID) 
-8

此工程的#ifdef X ||年。 所以,如果你想设置FOO = 0x55的,如果x或y如果您在使用`定义

#ifdef x 
    FOO=0x55; 
#else 
    #ifdef y 
     FOO=0x55; 
    #endif 
#endif 
+0

||是一个包容性的OR,但是发布的代码是针对一个“独家OR”。请参阅http://stackoverflow.com/questions/3246249/what-is-the-difference-between-inclusive-and-exclusive-或 – 2015-09-25 01:08:16

+1

@Charles Burns:上面的代码并不是独家或正如你所说的。即使宏x和y都被定义,代码仍然会在两个宏中的一个中设置FOO = 0x55,从而产生所需的效果。您的评论具有误导性,完全不正确。 – goldenmean 2017-09-11 09:34:37