Como adicionar uma condição 'ou' no #ifdef


166

Como posso adicionar uma condição 'ou' no #ifdef?

Eu tentei:

#ifdef CONDITION1 || CONDITION2

#endif

Isso não funciona.

Respostas:


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

Deveria trabalhar. :)

#ifdef é um pouco menos digitado, mas não funciona bem com condições mais complexas


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

2
como usar #ifndef com várias condições?
user3017748

18
@ user3017748 #if! definido (CONDITION1) || ! definido (CONDITION2)
jalf 22/01

4
@ user3017748, o comentário de jalf funciona se você quiser que algo aconteça se uma das duas condições não estiver definida. Se você quer que aconteceria se nenhum deles estiver definido , você pode usar um E: #if !defined(CONDITION1) && !defined(CONDITION2).
22417 cp.engr

1
Isso não precisa de um #endif?
Stevoisiak

18

Pode usar isso-

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

Isso também faz o mesmo

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

Mais distante-

  • E: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • E NÃO: #if defined CONDITION1 && !defined CONDITION2

-1

Eu sou realmente obcecado em manter limites estritos de coluna , e não sou fã da continuação de \ "\" linha porque você não pode colocar um comentário depois dele, então aqui está o meu 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   //|       |//
//|________________________________________|//
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.