So fügen Sie eine 'oder' Bedingung in #ifdef hinzu


166

Wie kann ich in #ifdef eine 'oder' Bedingung hinzufügen?

Ich habe versucht:

#ifdef CONDITION1 || CONDITION2

#endif

Das funktioniert nicht.

Antworten:


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

sollte arbeiten. :) :)

#ifdef ist etwas weniger tippend, funktioniert aber bei komplexeren Bedingungen nicht gut


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

2
Wie verwende ich #ifndef mit mehreren Bedingungen?
user3017748

18
@ user3017748 #if! defined (CONDITION1) || ! defined (CONDITION2)
Jalf

4
@ user3017748, der Kommentar von jalf funktioniert, wenn etwas passieren soll, wenn eine der beiden Bedingungen nicht definiert ist. Wenn dies geschehen soll, wenn keines von beiden definiert ist , verwenden Sie ein UND : #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
Benötigt das keine #endif?
Stevoisiak

18

Darf dies verwenden-

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

Dies macht auch das gleiche-

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

Des Weiteren-

  • UND: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • UND NICHT: #if defined CONDITION1 && !defined CONDITION2

-1

Ich bin wirklich OCD, wenn es darum geht, strenge Spaltenbeschränkungen einzuhalten , und kein Fan von "\" Zeilenfortsetzung, weil Sie keinen Kommentar danach setzen können. Hier ist meine Methode.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.