Angenommen, ich möchte mehrere Arten von Ausgabenachrichten in meinem Code haben. Eine davon ist die DEBUG
, die nur gedruckt wird, wenn der Code im Debug-Modus kompiliert wird.
Normalerweise müsste ich sowas schreiben
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
Das ist ziemlich umständlich und an vielen Stellen ärgerlich zu bedienen.
Ist es empfehlenswert, ein Makro für das Code-Snippet zu definieren, damit Sie es auf diese Weise verwenden können?
MSG_DEBUG("Debug message")
Oder gibt es eine andere, elegantere Möglichkeit, ohne Makros damit umzugehen? Ich interessiere mich für mögliche Lösungen in C und C ++, da ich beide Sprachen in verschiedenen Projekten verwende.
constexpr if
in C ++ besser implementiert werden .
STDERR
. Warum sollte es nicht stattdessen von NDEBUG
like assert()
does abhängen ? Dann könnte man es so definieren, dass es auch #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
den Stream-Status testet.