Preprocessor Magie
-
Hallo,
ich habe folgendes Problem:
#define A val_a // für ein beliebigen Wert val_a #define B val_b // für ein beliebigen Wert val_b // ... #define HLPR A #undef A #define A 1 #undef B #define B HLPR int main() { A // wird vom preprocessor aufgelöst zu 1 wie gewünscht B // wird vom preprocessor aufgelöst zu 1, gewünscht wäre aber val_a }
Hat jemand eine Idee, wie ich für "B" in der "main"-Funktion val_a als Ergebnis bekomme und nicht 1?
Danke im Voraus.
-
Ersetze HLPR durch
static const int HLPR = A;
(bzw. den entsprechenden Datentyp von A)
PS: Ohne die Hilfsvariable/-konstante wird es nicht funktionieren, denn die Makros haben kein Gedächtnis (sie werden erst bei der Benutzung mit den gerade aktuellen Makrodefinitionen aufgelöst).
-
Verschieb
#undef B #define B HLPR
hinter die main - Funktion (oder lass es weg)
-
Hallo Belli,
B soll aber val_a liefern, nicht val_b!
-
Oh ... ja ... sorry, da hab ich ungenau hingesehen ...