Як додати умову "чи" у #ifdef


166

Як я можу додати умову "чи" у #ifdef?

Я намагався:

#ifdef CONDITION1 || CONDITION2

#endif

Це не працює.

Відповіді:


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

повинен працювати. :)

#ifdef трохи менше набирати текст, але не справляється із складнішими умовами


5
@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)?
джельф

2
як використовувати #ifndef з кількома умовами?
користувач3017748

18
@ user3017748 #if! визначено (CONDITION1) || ! визначено (CONDITION2)
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

Я дійсно OCD щодо дотримання строгих обмежень стовпців , а не шанувальник продовження рядка "\", тому що ви не можете ставити коментар після цього, тому ось мій метод.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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.