TRACE wie bei MFC
-
Hallo, wie kann ich denn im DEBUG-Modus etwas in den Output-View des VS schreiben, so wie bei MFC mit TRACE?
Gruß mathi
-
OutputDebugString
-
Danke das funktioniert.
Hab mal noch ne Frage:Wenn ich jetzt nur 'OutputDebugString' schreibe, kostet mich das in der Release-Version Laufzeit? Oder sollte ich das lieber in '#ifdef _DEBUG ... #endif' einpacken?
Gruß mathi
[ Dieser Beitrag wurde am 03.12.2002 um 18:37 Uhr von mathi editiert. ]
-
Mach dir selbst ein Makro TRACE oder so ähnlich. Und da machst du das mit dem #ifdef DEBUG...
-
> Wenn ich jetzt nur 'OutputDebugString' schreibe, kostet mich das in der
> Release-Version Laufzeit?jo
-
OK,...Danke
-
Macro ist leichter gesagt als getan, mit dem #ifdef drinn. Ich bekomme es irgenwie nicht hin.
#define TRACE(value) \ #ifdef _DEBUG \ OutputDebugString(value); \ #endif
da bekomme ich die Fehlermeldung: "error C2162: Formaler Makroparameter erwartet"
Was mach ich Falsch? Gibt es noch ne andere Möglichkeit anstelle von OutputDebugString? Ich würde nämliche gerne noch ein paar Zahlen ausgeben, am Besten in der Form ("Text %d\n", zahl), das geht nicht mit OutputDebugString.
Gruß mathi
-
OutputDebugString(#value); \
2.) Eigene Funktion mit variablen Parametern drumherumbasteln. Dann wird das aber mit dem Makro nicht mehr funktionieren, da es da IMHO keine Variablen Parameter gibt.
-
Aber du brauchst ja auch nicht unbedingt ein Makro. Das #ifdef... kannste ja auch um deine neue Funktion bauen. Das ist ganz einfach mit den variablen Parametern dank vsprintf.
-
teste mal das
#ifndef NDEBUG #include <sstream> #endif // #ifndef NDEBUG #include <windows.h> #ifdef NDEBUG #define STREAMTRACE(value) #else #define STREAMTRACE(value) \ { \ std::ostringstream os; \ os << value; \ OutputDebugString( os.str().c_str() ); \ } #endif // #ifdef NDEBUG int main() { STREAMTRACE( 10 << "Hallo, World!" << endl ); }
[ Dieser Beitrag wurde am 03.12.2002 um 21:02 Uhr von Dimah editiert. ]
-
@< >:
also '#value' hat nicht geholfen, der macro funktionierte ja eigentlich, bloß eben nicht mit dem #ifdef...
Wenn ich meine Variante so Strukturiere wie Dimah, dann funktionierts.Eigene Funktion mit variabler Parameterliste ist ein guter Tip, bloß ich denke, so bekomme ich wieder einen Funktionsaufruf für die Release-Version(Fkt, die nichts macht).
@Dimah:
Funktioniert! -sieht elegant aus mit dem stream-
Das reicht mir aus, Danke!--------------------------------
Danke, schönen Abend noch und Gruß mathi
[ Dieser Beitrag wurde am 03.12.2002 um 21:39 Uhr von mathi editiert. ]