Ich habe einen Code, der #warning
viel verwendet, um Kompilierungszeit Zweige an den Benutzer zu signalisieren. Der Code hat viele Konfigurationsoptionen, daher ist nicht wirklich klar, welche Bits des Codes tatsächlich in die Kompilierung übernommen werden.Bedingte Verwendung #warning oder #pragma Nachricht oder nichts
Sobald Sie die Konfigurationsoptionen ausgewählt haben, verwirren diese Warnungen die Ausgabe wirklich. Daher möchte ich sie deaktivieren können. Der einfachste Weg wäre, jede dieser Warnungen in ein #ifdef ... #else
Konstrukt zu verpacken. Aber wenn ich diesen Code noch einmal anfassen sollte, muss ich die gesamte Codebasis erneut durchlaufen.
Also stattdessen möchte ich dies ein wenig abstrahieren. Ich stecke jedoch fest, ein Makro zu definieren, das #warning
oder #pragma message
aufruft. Die folgenden kompiliert aber nicht tun, das Richtige:
#ifdef EMIT_WARNINGS
#define WARNING(s) _Pragma("message(\"Hi\")")
#else
#define WARNING(s)
#endif
WARNING("How can I print this?")
Alle meine Versuche des Setzens s
in dort gescheitert. Sobald ich _Pragma("message(\"" s "\")")
mache, bekomme ich, dass _Pragma
einen einzelnen geklammerten String erwartet.
Gibt es etwas, was ich tun kann, um dies schön zu abstrahieren?