调试用的宏debug函数(宏),可以显示你debug所在的文件名,函数名,行号。例子里使用的是基于printf函数来做。纯c代码,不多说了,直接上源码:
//t.c
#include <stdio.h>
#define debug(argc,argv...) ({printf("%s:%s:%05d=>",__FILE__,__func__,__LINE__);printf(argc,##argv); })
void main(void)
{
int x=23;
double y=3.14;
char *str="hello";
char chr='r';
debug("========\n");
debug("%d %f %s %c\n",x,y,str,chr);
debug("xxxxxxxx\n");
//下面是gcc预定义的其他宏,供大家参考
debug("__BASE_FILE__=%s gcc:__VERSION__=%s __DATE__,__TIME__ = %s,%s\n",__BASE_FILE__,__VERSION__,__DATE__,__TIME__);
return;
}
这里注意下, __DATE__,__LINE__在编译时已经固定下来了,因此,他们也可以用在你代码里制作的软件版本上来。
下面是打印信息:
t.c:main:00012=>========
t.c:main:00013=>23 3.140000 hello r
t.c:main:00014=>xxxxxxxx
t.c:main:00016=>__BASE_FILE__=t.c gcc:__VERSION__=4.8.4 __DATE__,__TIME__ = Apr 24 2016,10:19:22