C语言不定参数函数实现(自己的调试函数)
C语言不定参数函数实现:
int debug_inf(const char *format, ...)
{
va_list arglist;
va_start(arglist, format);
vprintf(format, arglist);
/*
*或者用下面的代码来实现
*char str[80];
vsprintf(str, format, arglist);
printf("%s", str);
*/
va_end(arglist);
}
自己写程序时会加很多调试信息,当程序完成后又不想要很多的打印信息,如果一条条去删除,就会很麻烦,也很弱智,所以就要用一个宏定义来实现了:
#define DEBUG_INF
int debug_inf(const char *format, ...)
{
#ifdef DEBUG_INF
va_list arglist;
va_start(arglist, format);
vprintf(format, arglist);
/*
*或者用下面的代码来实现
*char str[80];
vsprintf(str, format, arglist);
printf("%s", str);
*/
va_end(arglist);
#endif
}当程序完成,不想要打印信息时,只要删除宏就好了:
// #define DEBUG_INF
同时,也可以用宏定义来实现:
#ifdef DEBUG_INF
#define debug(format, args...) (fprintf (stderr, format, ##args))
#else
#define debug(format, args...)
#endif或者:
#ifdef DEBUG_INF
#define debug(format, ...) printf(format, ##__VA_ARGS__)
#else
#define debug(format, ...)
#endif
##的用法可以百度,如果没有##,在使用debug()时,如果有逗号[ debug("%d", i) ]时不会有错误,但是没有逗号[ debug("Hello world\n") ]时会报错:
error: expected expression before ‘)’ token
#define debug(format, ...) printf(format, __VA_ARGS__)
^
test.c:31:2: note: in expansion of macro ‘debug’
debug("Hello world\n");
完成。
调试
(
“
%d个
”
,
我
)