Präprozessorproblem bei Vergleich-Operation
-
Hallo Leute,
ich hab ein Problem beim Vergleichen von Werten im Präprozessor. Ich beschreib es mal möglichst einfach:
Ich habe eine Definition "#define HALLO TEXT_001". Nun möchte ich diese im Präprozessor vergleichen, ob sie zufällig den Wert "TEXT_0815" hat. Hier der Code dazu:
#define HALLO TEXT_001 //Hallo hat den Wert "TEXT_001" #if (HALLO == TEXT_0815) //Überprüfung, ob Hallo den Wert "TEXT_0815" hat #define .... #endif
Diese Abfrage führt allerdings zu einem Compilerfehler:
#if (HALLO == TEXT_0815) ^ Error: ")" expected
Also ich wäre um jeden Lösungshinweis dankbar, ich verzweifel nämlich gerade dran. Das Problem tritt übrigens nur dann auf, wenn HALLO einen Wert mit "Unterstrich (_)" besitzt, was sich bei mir aber nicht vermeiden lässt!
Danke für die Hilfe,
StoBÄR
-
Ohne Klammern geht's?
-
Underscores in Identifiern sind natürlich erlaubt, daran kann es nicht liegen.
Wie sind denn TEXT_001 und TEXT_0815 definiert?
-
Gar nicht
Kann es sein, dass er einfach nur Vergleiche auf Zahlen machen kann?
-
Was nach #if steht, wird (nachdem Macros ersetzt wurden) wie ein normaler Ausdruck ausgewertet. Strings vergleichen kann man damit also nicht.
Aber trotzdem seltsam, dass es eine Fehlermeldung gibt. Eigentlich sollte
#if (HALLO == TEXT_0815)
vom Präprozessor ersetzt werden durch
#if (TEXT_001 == TEXT_0815)
Und das, wenn TEXT_001 und TEXT_0815 nicht vorher definiert wurden, durch
#if (0 == 0)
was dann ausgewertet wird zu
#if 1