Bsp. mein
DDKWizard:
Code:
#if DBG
#ifdef ADVANCED_DEBUG
#define DebugPrint DbgPrint("[%s] %s (line: %d)\n", __##FILE##__, __##FUNCTION##__, __##LINE##__); DbgPrint
#else
#define DebugPrint DbgPrint
#endif
#else
#define DebugPrint /##/DbgPrint
#endif
Was macht das (Annahme ADVANCED_DEBUG=1 und DBG=1)? Bei jeder Erwaehnung von "DebugPrint(parameter)" wird ein DbgPrint davorgestellt, weshalb es nach dem Einfuegen so aussieht:
Code:
DbgPrint("[%s] %s (line: %d)\n", __FILE__, __FUNCTION__, __LINE__); DbgPrint(parameter)
Somit wird das beim eigentlichen finalen Durchlauf des Praeprozessors als, bspw.:
Code:
DbgPrint("[%s] %s (line: %d)\n", "bla.cpp", "CMeineKlasse::MeineMethode", 37); DbgPrint(parameter)
... interpretiert.
Ziemlich bequem
... dank Praeprozessor leiste ich mir sowas dann auch nur im Debug-Build, womit die Performanceeinbussen auch nicht spuerbar sind, der Nutzen beim Debuggen allerdings schon.