C语言不定参数函数实现

来源:互联网 发布:js代码不显示 编辑:程序博客网 时间:2024/05/17 22:15

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_INFint debug_inf(const char *format, ...){#ifdef DEBUG_INFva_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");


完成。
0 0
原创粉丝点击