C-Makro: #if auf Gleichheit prüfen

Lesezeit: 1 Minute

Benutzeravatar von anon
anon

Gibt es eine Möglichkeit, in Makros auf numerische Gleichheit zu prüfen?

Ich möchte so etwas tun

#define choice 3

#if choice == 3
  ....
#endif

#if choice == 4
 ...
#endif

Unterstützen C-Makros solche Dinge?

  • Was hat dir dein Compiler gesagt?

    – Christoph

    20. Februar 2010 um 22:15 Uhr

  • Besser noch, was sagt das Lehrbuch / Nachschlagewerk?

    – Alok Singhal

    20. Februar 2010 um 22:55 Uhr

  • @Christoph Mein Compiler sagt derzeit: “Nein, ich unterstütze das nicht.” Ich versuche herauszufinden, warum es nicht funktioniert. Deine Frage ist also in meiner Situation nicht hilfreich.

    – Pulseczar

    8. Oktober 2021 um 17:25 Uhr

Benutzeravatar von David R. Tribble
David R Tribble

Eine andere Möglichkeit, Ihren Code zu schreiben, verwendet Chained #elif Richtlinien:

#if choice == 3
  ...
#elif choice == 4
  ...
#else
  #error Unsupported choice setting
#endif

Beachten Sie, dass wenn choice ist nicht #definedder Compiler (Präprozessor) behandelt es so, als hätte es den Wert 0.

  • Wie können wir Zeichenketten vergleichen? Nämlich wenn ich ein Makro per definiert habe #define MY_MACRO Hello. Wie kann ich machen if um seinen String-Wert zu überprüfen?

    – Royi

    13. Juli 2020 um 5:44 Uhr

  • Der ISO C-Präprozessor hat keine Möglichkeit, Zeichenfolgen zu vergleichen.

    – David R. Tribble

    27. August 2020 um 21:16 Uhr

wallyks Benutzeravatar
Wallyk

Das sollte nämlich funktionieren. Sehen http://gcc.gnu.org/onlinedocs/cpp/If.html#If

Diese Referenz ist korrekt, aber im “Standardformat” geschrieben: abstrakt ohne Beispiele.

Soweit ich weiß sollte das funktionieren. Welchen Compiler verwendest du?

PS : Nur zur Information, die definierten Namen werden normalerweise in Großbuchstaben geschrieben !

#define CHOICE 3

1389620cookie-checkC-Makro: #if auf Gleichheit prüfen

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

Privacy policy