Comment ajouter une condition 'ou' dans #ifdef

166

Comment puis-je ajouter une condition 'ou' dans #ifdef?

J'ai essayé:

#ifdef CONDITION1 || CONDITION2

#endif

Cela ne fonctionne pas.

Michael
la source

Réponses:

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

devrait marcher. :)

#ifdef est un peu moins tapant, mais ne fonctionne pas bien avec des conditions plus complexes

jalf
la source
5
@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)?
jalf
2
comment utiliser #ifndef avec plusieurs conditions?
user3017748
18
@ user3017748 #if! défini (CONDITION1) || ! defined (CONDITION2)
jalf
4
@ user3017748, le commentaire de jalf fonctionne si vous voulez que quelque chose se produise si l' une des deux conditions n'est pas définie. Si vous voulez que cela se produise si aucun d'entre eux sont définis , vous utiliseriez un ET: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr
1
Cela n'a-t-il pas besoin d'un #endif?
Stevoisiak
18

Peut utiliser ceci

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

Cela fait également la même chose

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

Plus loin-

  • ET: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • ET PAS: #if defined CONDITION1 && !defined CONDITION2
Minhas Kamal
la source
-1

Je suis vraiment OCD sur le maintien de limites de colonnes strictes , et pas un fan de la continuation de la ligne "\" parce que vous ne pouvez pas mettre de commentaire après, alors voici ma méthode.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
JMI MADISON
la source