#ifdef, #undef - Warnungen
-
Hallo,
hätte nur eine kurze frage...mein compiler warnt mich bei folgendem Code immer mit den Fehlermeldungen
"[Warning] Extra tokens at end of #ifdef directive" oder
"[Warning] Extra tokens at end of #undef directive".und zwar in den markierten zeilen:
#if DEBUGLEVEL>0 //Debugging-Infos #define SHOW_INVARIANTS #define ASSERT(x)\ if (!(x))\ //<-- hier {\ //<-- hier cout << "FEHLER!! Annahme " << #x << "nicht zutreffend!\n";\ cout << "In Zeile " << __LINE__ << "\n";\ cout << "In Datei " << __FILE__ << "\n";\ } //<-- und hier #else #define ASSERT(x) #endif #if DEBUGLEVEL>1 #define SHOW_[]INVARIANTS #endifDabei ist es scheinbar egal, wie ich die definition aufhebe.
Habs schon genau umgekehrt versucht, also mit#if DEBUGLEVEL>0 //Debugging-Infos #undef SHOW_INVARIANTS #undef ASSERT(x)\ if (!(x))\ //<-- hier {\ //<-- hier cout << "FEHLER!! Annahme " << #x << "nicht zutreffend!\n";\ cout << "In Zeile " << __LINE__ << "\n";\ cout << "In Datei " << __FILE__ << "\n";\ } //<-- und hier #else #undef ASSERT(x) #endif #if DEBUGLEVEL>1 #undef SHOW_[]INVARIANTS #endifund einfach mit
#undef SHOW_INVARIANTS #undef SHOW_[]INVARIANTS #undef ASSERT(x)Beides scheint zu funktionieren, aber die Warnungen bleiben... Wovor will mein DevC++ - Compiler mich da warnen?..

-
Bei einem #undef brauchst du nur den Namen des zu undefinierenden Makros anzugeben, alle weiteren Angaben sind sinnlos (evt. sogar verboten).
(#undef hebt die Makro-Definition auf) Bei deinem #define sollten deratige Meldungen eigentlich nicht erscheinen.(btw, kommt der Bezeichner SHOW_[]INVARIANTS wirklich durch den Präprozessor?)
-
Habe das SHOW_[]INVARIANTS , obwohl es bei mir eigentlich geklappt hat, mal durch SHOW_XINVARIANTS ersetzt..
Das war eine meldung weniger!Ausserdem hab ich den Parameter bei ASSERT weggelassen:
#undef SHOW_INVARIANTS #undef SHOW_XINVARIANTS #undef ASSERTAstrein, jetzt sind sie weg

Dankeschööön