Un peu plus compliqué, et n'étant actif que lorsque la variable DBUG est déclarée dans l'environnement (et, bien sur compilé avec l'option -D__debug__) :Envoyé par Emmanuel Delahaye
Et le header :
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
29 #include <stdio.h> #define _debug_c_ #include <debug.h> #undef _debug_c_ #include <stdarg.h> void _dbg_full(char *file, int line, char *func, char *fmt, ... ) { va_list args; char buf[1024], buf2[1024]; va_start(args, fmt); if (!getenv("RPTDBG")) return; if (func) { sprintf(buf2, "%s (%s:%d): %s", func, file, line, fmt); } else { sprintf(buf2, "%s:%d: %s", file, line, fmt); } vsprintf(buf, buf2, args); fprintf(stderr, "%s\n", buf); va_end(args); } void dbg_print(char *fmt, ... ) { va_list args; va_start(args, fmt); if (getenv("DBUG")) vfprintf(stderr, fmt, args); va_end(args); }
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 #ifndef _debug_h_ #define _debug_h_ #if defined(__debug__) || defined(_debug_c_) #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ void _dbg_full(char *file, int line, char* func, char *fmt, ...); void dbg_print(char *fmt, ...); #ifdef __cplusplus } #endif /*__cplusplus */ #ifndef _debug_c_ #define dbg_full(fmt, ...) _dbg_full(__FILE__, __LINE__, __func__, fmt , __VA_ARGS__) #endif #else #define dbg_full(...) #define dbg_print(...) #endif #endif
Partager