Bonjour,

Lorsque je code; j'ai plus ou moins trois mode:
debug
release + trace (pour debugger la release )
release (pour clients - la plus legere possible)

Du coup dans le code (qui n'est pas tout de moi), je me trouve parfois avec:
methode 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
#ifdef __TRACE
affiche( "Message pour debugger" )
#endif
methode 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
#ifdef __TRACE
#define affiche( x )  affiche(x)
#else
#define affiche( x )
#endif
 
// et dans le code
affiche ( "Message pour debugger" )
methode 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
class trace{
#ifdef __TRACE
  inline affiche(x) {affiche(x); };
#else
  inline affiche(x) { };
#endif
}
 
// Et dans mon code
pTrace->affiche( "Message pour debugger" );
Je trouve les deux premières methodes lourdes et je prefere la 3eme.
Mais je me demandai, ma fonction affiche() utilise plus de parametre que dans l'exemple, du coup meme si je compile en release sans __TRACE, est-ce que la pile de paramètre ne va pas être intégré dans le code final?
Le simple fait d'utiliser mon pointeur et de faire appel va generer du code, n'est-il pas?

Enfin sinon comment faites vous vous ?

Merci