2012-03-13 24 views
185

Ci scusiamo per la domanda di base. Vorrei impostare la condizione OR nella direttiva #ifdef.? Come si fa? Ho provatocome usare #ifdef con una condizione OR?

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

Non ha funzionato? Qual è il modo corretto?

+7

Se stai usando '|' per "o" nelle condizionali C troppo, si sta facendo male. –

risposta

418

Ti piace questa

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

Questo funziona per #ifdef x || y. Quindi, se si volesse impostare FOO = 0x55 se X o Y sono definiti

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

|| è un OR inclusivo, ma il codice pubblicato è per un OR esclusivo. Per favore vedi http://stackoverflow.com/questions/3246249/che-è-la differenza- tra-inclusive-and-exclusive-or –

+1

@Charles Burns: il codice postato sopra NON è esclusivo O come dici tu. Anche se entrambi i macro x e y sono definiti, il codice ancora imposterà FOO = 0x55 in uno dei due dando così l'effetto desiderato. Il tuo commento è fuorviante e completamente scorretto. – goldenmean

Problemi correlati