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égante
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
Est-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?

J'espère avoir été assez clair

Merci d'avance,
Crisanar