Jak dodać warunek „lub” w #ifdef


166

Jak mogę dodać warunek „lub” w #ifdef?

Próbowałem:

#ifdef CONDITION1 || CONDITION2

#endif

To nie działa.

Odpowiedzi:


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

powinno działać. :)

#ifdef wymaga trochę mniej pisania, ale nie działa dobrze w bardziej złożonych warunkach


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

2
jak używać #ifndef z wieloma warunkami?
user3017748

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

4
@ user3017748, komentarz jalfa działa, jeśli chcesz, aby coś się stało, jeśli żaden z dwóch warunków nie jest zdefiniowany. Jeśli chcesz to się stało, gdyby żaden z nich nie są zdefiniowane , można używać AND: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
Czy to nie wymaga #endif?
Stevoisiak

18

Może użyć tego-

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

To również robi to samo -

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

Dalej-

  • I: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • I NIE: #if defined CONDITION1 && !defined CONDITION2

-1

Naprawdę jestem OCD, jeśli chodzi o utrzymywanie ścisłych limitów kolumn i nie jestem fanem kontynuacji linii "\", ponieważ nie możesz po niej wstawić komentarza, więc oto moja metoda.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.