Come aggiungere una condizione 'o' in #ifdef


166

Come posso aggiungere una condizione 'o' in #ifdef?

Ho provato:

#ifdef CONDITION1 || CONDITION2

#endif

Questo non funziona.

Risposte:


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

dovrebbe funzionare. :)

#ifdef è un po 'meno digitando, ma non funziona bene con condizioni più complesse


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

2
come usare #ifndef con più condizioni?
user3017748

18
@ user3017748 #if! definito (CONDITION1) || ! definito (CONDITION2)
jalf

4
@utente3017748, il commento di jalf funziona se vuoi che accada qualcosa se una delle due condizioni non è definita. Se si vuole che accada, se nessuno dei due sono definite , utilizza un AND: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.gr

1
Questo non ha bisogno di un #endif?
Stevoisiak,

18

Può usare questo-

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

Anche questo fa lo stesso

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

Ulteriore-

  • E: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • E NON: #if defined CONDITION1 && !defined CONDITION2

-1

Sono davvero un DOC riguardo al mantenimento di rigorosi limiti di colonna e non un fan della continuazione della riga "\" perché non puoi inserire un commento dopo di esso, quindi ecco il mio metodo.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.