Welchen Wert hat ein Define das ohne Wert definiert wurde?



  • Hallo,

    welchen Wert hat das Define FOO, falls es ohne Wert definiert wurde und in einem #if ausgewertet wird?

    Zum Beispiel so:

    #define FOO
    
    #if FOO
    int i = 0;
    #else
    int i = 1;
    #endif
    

    Und wie sieht es mit Symbolen aus die in einem #if Ausdruck ausgewertet wurden, aber vorher nicht definiert wurden?

    Zum Beispiel so:

    #if BAR
    int i = 0;
    #else
    int i = 1;
    #endif
    

    Sagt der Standard dazu etwas?

    Danke & Grüße



  • Was genau hast Du denn vor?
    Wenn FOO ein definiertes Macro ist, kompiliert Dein erstes Beispiel nicht. Vielleicht meinst Du #ifdef?

    In Deinem zweiten Beispiel würde BAR mit 0 ersetzt, und die gesamte constant expression nach dem #if würde zu false evaluieren.

    Nach
    #define FOO
    würden Auftreten von FOO übrigens mit einer leeren Liste von preprocessing tokens ersetzt...also durchaus definiert.


Anmelden zum Antworten