Bonjour à tous,
Je développe sous VC++6 mais ma question porte plus sur le C++ que sur mon IDE.
N'utilisant pas la MFC, j'ai voulu réécrire une petite fonction Trace() qui me permettrait d'afficher des infos sur la fenetre de debug.
Mon problème c'est que lorsque je ne suis plus en mode débug, j'aimerais que tous les appels à ma fonction disparaissent afin de gagner de la place mais surtout de la sécurité. Et je trouve fort fastideux de mettre un #ifndef .. #endif de part et d'autre de chaque appel de ma fonction debug::print()
Voici ma solution actuelle mais je la trouve tout sauf éléganteEst-ce la seule méthode pour que mon compilateur ne génère pas de code pour ma fonction une fois que je ne suis plus en mode débug?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef _DEBUGH_ #define _DEBUGH_ #include <windows.h> #include <stdio.h> class debug { public: #ifdef _DEBUG static void print(LPCTSTR pszString, ...) { TCHAR buff[1024]; va_list arg; va_start(arg, pszString); vsprintf(buff, pszString, arg); OutputDebugString(buff); va_end(arg); }; #else static void print(void* a, void* b=0, void* c=0){}; // Pas très propre mais c'est la seule méthode que j'ai trouvée pour ne pas avoir un appel de fonction #endif }; #endif
J'espère avoir été assez clair
Merci d'avance,
Crisanar
Partager