C Präprozessor testet die Definiertheit mehrerer Makros

Lesezeit: 1 Minute

Benutzeravatar von Lefteris
Lefteris

Ich habe die Seite durchsucht, aber nicht die Antwort gefunden, nach der ich gesucht habe, also hier ist eine wirklich kurze Frage.

Ich versuche so etwas zu tun:

#ifdef _WIN32 || _WIN64
     #include <conio.h>
#endif

Wie kann ich so etwas tun? Ich weiß, dass _WIN32 sowohl für 32- als auch für 64-Bit-Fenster definiert ist, also wäre ich mit beiden für die Windows-Erkennung einverstanden. Mich interessiert eher, ob ich solche logischen Operatoren mit Präprozessordirektiven verwenden kann, und wenn ja, wie, da das obige nicht funktioniert.

Kompilieren mit gcc bekomme ich:

Warnung: zusätzliche Tokens am Ende der #ifdef Direktive , und es nimmt im Grunde nur das erste MACRO und ignoriert den Rest.

Versuchen:

#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif

Das definiert Makro testet, ob ein Name definiert ist oder nicht, und lässt Sie logische Operatoren auf das Ergebnis anwenden.

  • Danke, du hattest recht. Genau das, wonach ich gesucht habe. Das funktioniert gut 🙂

    – Lefteris

    8. Juni 2009 um 16:23 Uhr

Sie müssen verwenden #if und Sonderoperator defined

Ich denke es sollte so möglich sein:

#if defined block1 || defined block2 /*or any other boolean operator*/
   /*Code*/
#endif

Mehr Informationen hier

Verwendung definiert:

#if defined(A) || defined(B)
    #include <whatever.h>
#endif

1402210cookie-checkC Präprozessor testet die Definiertheit mehrerer Makros

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy