Warum compiler beschweren sich über dieses makro Erklärung
Schreibe ich das folgende makro für das Debuggen Bequemlichkeit,
1 #ifndef DEF_H
2 #define DEF_H
3 #define DEBUG_MODE
4 #define DEBUG_INFO(message) \
5 #ifdef DEBUG_MODE \
6 cout << message << endl; \
7 #endif \
8 #endif
aber gcc beschwert sich wie in der folgenden
def.h:4: error: '#' is not followed by a macro parameter
def.h:1: error: unterminated #ifndef
Was ist falsch mit diesem Stück code? Vermisse ich einige wichtige Punkte hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht
#ifdef
s innerhalb einer makro-definition. Schalten Sie es von innen nach außen:Kann man nicht einbetten einer Präprozessor-Direktive in einen anderen Präprozessor-Direktive (die
#ifdef DEBUG_MODE
innerhalb der definition vonDEBUG_INFO
). Stattdessen machen Sie etwas wie(Das ist noch nicht ideal; defensiv makro-Codierung suggeriert so etwas wie
Vielleicht ein
inline
Funktion besser funktionieren würde.)Ich geuss, wenn Sie Essen '\' in Zeile 7, das Stück Code arbeiten.