Namensräume
Varianten
Aktionen

Präprozessor-Bedingungen

Aus cppreference.com


#if, #ifdef, #ifndef, #else, #elif, #endif

Diese Präprozessor-Befehle geben dem Compiler die Fähigkeit, Verzweigungen vorzunehmen. Wenn eine Datei kompiliert wird, können diese Befehle benutzt werden, um bestimmte Zeilen zu integrieren oder auszulassen.

     #if Ausdruck

Wenn der Wert des Ausdrucks true ist, wird der Code, der dem Befehl folgt, kompiliert.

     #ifdef Makro

Wenn das angegebene Makro durch ein #define definiert wurde, wird der Code, der dem Befehl folgt, kompiliert.

     #ifndef Makro

Wenn das angegebene Makro nicht durch ein #define definiert wurde, wird der Code, der dem Befehl folgt, kompiliert.

     #if Bedingung1
     //...
     #elif Bedingung2
     //...
     #endif

Der #elif-Befehl ist ein stark verkürztes "else if" und funktioniert genau so, wie man erwarten würde.

Beispiel 1:

     #ifdef DEBUG
       cout << "Testversion! i=" << i << endl;
     #else
       cout << "finale Version!" << endl;
     #endif

Es ist zu beachten, wie viel einfacher die Fehlersuche mit diesem Konstrukt im Vergleich dazu, ständig "cout"s hinzuzufügen oder zu entfernen, ist.

Beispiel 2:

    #define N 42
    #ifdef N
        #if N == 1
            cout << "N = 1";
        #elif N == 2
            cout << "N = 2";
        #elif N == 42
            cout << "answer to life, the universe and everything";
        #endif
    #endif