Как добавить условие 'или' в #ifdef


166

Как я могу добавить условие 'или' в #ifdef?

Я пытался:

#ifdef CONDITION1 || CONDITION2

#endif

Это не работает.

Ответы:


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

должно сработать. :)

#ifdef немного меньше печатает, но плохо работает с более сложными условиями


5
@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)?
Джалф

2
Как использовать #ifndef с несколькими условиями?
user3017748

18
@ user3017748 #if !определены (СОСТОЯНИЕ1) || ! определено (СОСТОЯНИЕ2)
jalf

4
@ user3017748, комментарий jalf работает, если вы хотите, чтобы что-то произошло, если одно из двух условий не определено. Если вы хотите, чтобы это произошло , если ни один из них определены , вы использовали бы и: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
Разве это не нужно #endif?
Stevoisiak

18

Может использовать это

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

Это также делает то же самое

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

Дальше-

  • И: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • И НЕТ: #if defined CONDITION1 && !defined CONDITION2

-1

Я действительно не согласен с соблюдением строгих ограничений на столбцы , а не фанат продолжения строки "\", потому что вы не можете добавить комментарий после него, так что вот мой метод.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.