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.

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


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

-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   //|       |//
//|________________________________________|//
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.