Präprozessordirectiven in #define
-
Hi
Mein Problem ist folgendes. Ich habe ein Makro und wollte in einen anderen Makro überprüfen ob es existiert. deswegen habe ich geschrieben
#define MYKONSTANT 5
#define PROOF #ifndef MYKONSTANT \
0 \
#else \
MYKONSTANT \
#endifKann man das nicht so schreiben. Gibt es einen Möglichkeit das so zu schreiben???
-
Ich denke das geht nicht. Du kannst ja auch nicht folgendes machen, oder?
#define COMMENT(comment) // #comment
-
Ok, blödes Beispiel und ausserdem noch am Thema vorbei. Bei deiner Variante müsste der Präprozessor zweimal durchlaufen nur um die Makros und Präprozessor-Anweisungen aus dem Code zu haben.
-
Falls du PROOF nur brauchst, um auf Veränderungen in MY_CONSTANT einzugehen:
const int MY_CONSTANT = 5; const int PROOF = MY_CONSTANT == 5 ? MY_CONSTANT : 0;
andernfalls, also wenn du die Existenz von MY_CONSTANT selbst prüfen willst, und wenn du unbedingt mit Textersetzungsmaschinen arbeiten willst,:
#define MY_CONSTANT 5 #ifdef MY_CONSTANT const int PROOF = MY_CONSTANT; #else const int PROOF = 0; #endif //das verhält sich zumindest ähnlich und kommt mit textersetzung aus.
[ Dieser Beitrag wurde am 07.07.2003 um 00:42 Uhr von davie editiert. ]