Cómo agregar una condición 'o' en #ifdef


166

¿Cómo puedo agregar una condición 'o' en #ifdef?

Yo he tratado:

#ifdef CONDITION1 || CONDITION2

#endif

Esto no funciona.

Respuestas:


317
#if defined(CONDITION1) || defined(CONDITION2)

Deberia trabajar. :)

#ifdef es un poco menos tipeado, pero no funciona bien con condiciones más complejas


55
@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)?
jalf

2
¿Cómo usar #ifndef con múltiples condiciones?
user3017748

18
@ user3017748 #if! definido (CONDICIÓN1) || ! definido (CONDICIÓN2)
jalf

44
@ user3017748, el comentario de jalf funciona si desea que algo suceda si alguna de las dos condiciones no está definida. Si desea que suceda si se definen ninguno de ellos , tendrá que utilizar una Y: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
¿Esto no necesita un #endif?
Stevoisiak

18

Puede usar esto

#if defined CONDITION1 || defined CONDITION2
//your code here
#endif

Esto también hace lo mismo

#if defined(CONDITION1) || defined(CONDITION2)
//your code here
#endif

Más lejos-

  • Y: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • Y NO: #if defined CONDITION1 && !defined CONDITION2

-1

Realmente estoy en el TOC sobre el mantenimiento de límites estrictos de columna , y no soy fanático de la continuación de línea "\" porque no puedes poner un comentario después, así que aquí está mi método.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#ifdef  CONDITION_01             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef  CONDITION_02             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef  CONDITION_03             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef              TEMP_MACRO   //|       |//
//|-  --  --  --  --  --  --  --  --  --  -|//

printf("[IF_CONDITION:(1|2|3)]\n");

//|-  --  --  --  --  --  --  --  --  --  -|//
#endif                           //|       |//
#undef              TEMP_MACRO   //|       |//
//|________________________________________|//
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.