2012-03-13 15 views
185

Przepraszamy za zadawanie bardzo podstawowych pytań. Chciałbym ustawić warunek OR w dyrektywie #ifdef.? Jak to zrobić? Próbowałemjak korzystać z #ifdef z warunkiem LUB?

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

To nie działa? Jaki jest właściwy sposób?

+7

Jeśli używasz '|' za „lub” w swoich warunkowych C też, że robisz to źle. –

Odpowiedz

418

Ci się to

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

Działa to dla #ifdef x || y. Więc jeśli chciał ustawić FOO = 0x55 jeśli x lub y są definiowane

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

|| to OR włącznie, ale kod wysłany dotyczy wyłącznego OR. Proszę zobaczyć http://stackoverflow.com/questions/3246249/what-is-the-difference-between-inclusive-and-exclusive-or –

+1

@Charles Burns: Powyższy kod NIE jest wyłączny LUB jak mówisz. Nawet jeśli oba makra x i y są zdefiniowane, kod nadal ustawia FOO = 0x55 w jednym z dwóch, dając w ten sposób pożądany efekt. Twój komentarz jest mylący i wręcz niepoprawny. – goldenmean