Bonjour,
Mon but est d'ecrire des macros de debug me permettant de simplifier les appels aux fonctions de trace.
A force de chercher, j'ai ecrit le code ci-dessous, mais qui ne me convient pas completement : il fonctionne tres bien si j'ai deux parametres d'appel (ou plus), mais pas si j'en ai un seul :
Exemples d'appel (l'appel commenté est celui qui ne fonctionne pas, et que je voudrais faire fonctionner) :
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 #ifndef FILE_ERROR_H #define FILE_ERROR_H #ifdef __cplusplus extern "C" { #endif #define TRACE_LEVEL 2 #define WHERESTR "[file %s, line %d, TrcLvl %d]: " #define WHEREARG __FILE__, __LINE__ #define DEBUGINTERNAL(...) fprintf(stderr, __VA_ARGS__) #define DEBUGSTR1(fmt, ...) do { if (TRACE_LEVEL >= 1) { DEBUGINTERNAL(WHERESTR fmt, WHEREARG, 1, __VA_ARGS__); }} while (0) #ifdef _cplusplus } #endif #endif
En esperant avoir ete clair dans mes explications, et que vous pourrez m'apporter une reponse
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 #include <stdio.h> #include "file_error.h" int main (void) { int i = 42; DEBUGSTR1 ("test %d %d\n", i, i); DEBUGSTR1 ("test %d\n", i); /* DEBUGSTR1 ("test\n"); */ return 0; }![]()
Partager