2012-03-13 113 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