Ausgaben nur in Debug Version
-
Hallo,
ich möchte Ausgaben auf stdout schreiben - jedoch nur, wenn ich mich in der Debug Version befinde. Wenn das Programm im Release Modus kompiliert wird und läuft, soll der Funktionsaufruf für die Ausgabe garnicht erst stattfinden.
Ich könnte natürlich immer das machen:
#ifdef DEBUG OutputDebugStr("moep"); #endifAber das sieht im Code ja doch hässlich aus. Gibt es da was fertiges oder eine Standardlösung? Ich benutze VS 2005 und Windows.
-
Mach dir ein Makro.
#ifdef DEBUG #define OUTPUT_DEBUG_STRING(str) OutputDebugStr(str) #else #define OUTPUT_DEBUG_STRING(str) ; #endif OUTPUT_DEBUG_STRING("moep");
-
Das gab es schon mal: http://www.c-plusplus.net/forum/viewtopic-var-t-is-219825.html
wwm schrieb:
#else #define OUTPUT_DEBUG_STRING(str) ; #endifHier würde ich
;durch(void)0ersetzen. Eine Erklärung findest du auch im verlinkten Thread.
-
Und wieso nicht einfach so:
#ifdef DEBUG # define OUTPUT_DEBUG_STRING(str) OutputDebugStr(str) #else # define OUTPUT_DEBUG_STRING(str) #endif OUTPUT_DEBUG_STRING("moep");Ein leeres Makro ist auch erlaubt.
Grüssli
-
Dravere schrieb:
Ein leeres Makro ist auch erlaubt.
Gut, das war mir gar nicht bekannt. Ich dachte, das hätte ich auch schon probiert, und es würde nicht gehen...
-
Ich bild mir ein mit so einem Konstrukt auch schon mal Probleme gehabt zu haben.
War glaub ich irgend ein embedded compiler