2012-03-13 12 views
185

Perdón por hacer una pregunta muy básica. Me gustaría configurar O condición en la directiva #ifdef. ¿Cómo hacer eso? Probécómo usar #ifdef con una condición O?

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

No funcionó? ¿Cuál es la forma correcta?

+7

Si está usando '|' a favor "o" en sus condicionales C también, lo estás haciendo mal. –

Respuesta

418

gusta esta

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

Esto funciona para #ifdef x || y. Así que si desea establecer FOO = 0x55 si X o Y se definen

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

|| es un OR inclusivo, pero el código publicado es para un OR exclusivo. Consulte http://stackoverflow.com/questions/3246249/what-is-the-difference-between-inclusive-and-exclusive-or –

+1

@Charles Burns: El código publicado anteriormente NO es exclusivo O como usted dice. Incluso si se definen ambas macros xey, el código aún establecerá FOO = 0x55 en uno de los dos dando así el efecto deseado. Tu comentario es engañoso y francamente incorrecto. – goldenmean

Cuestiones relacionadas