经常在实际的调试过程中,使用最基本的调试方法printf,但是常常需要在print函数中使用参数__FILENAME__、__FUNCTION__、__LINE__,特别是大型的项目中,感觉在编码时重复写入这几个参数有些繁琐,所以很自然的想到了宏定义,当然你也可以参照printf函数写自己的My_Printf函数,但是不想费周折就使用宏定义吧!代码如下:
环境 标准C99,GNC
#define PRT(...) printf("Filename %s, Function %s, Line %d > ", __FILE__, __FUNCTION__, __LINE__); \
printf(__VA_ARGS__); \
printf("\n");
测试代码:
#include <stdarg.h>
#include <stdio.h>
#define PRT(...) printf("Filename %s, Function %s, Line %d > ", __FILE__, __FUNCTION__, __LINE__); \
printf(__VA_ARGS__); \
printf("\n");
int main()
{
int a =0;
PRT("a");
PRT("hello, %d ", 10);
PRT("%d, %s, %d", 10, "dafdsa", 20);
return 0;
}
测试结果:
root@ubuntu:/home/ybq/Desktop# gcc printf.c -o printf
root@ubuntu:/home/ybq/Desktop# ./printf
Filename printf.c, Function main, Line 22 > a
Filename printf.c, Function main, Line 23 > hello, 10
Filename printf.c, Function main, Line 24 > 10, dafdsa, 20
文章记录在这里,没有什么技术含量,但是挺实用的,在这里给大家分享一下,希望它能给大家带来便利!
推荐使用这个宏:
#define DVR_PRT(format,...) printf("[File:"__FILE__", Line:%d] "format, __LINE__, ##__VA_ARGS__)
#define PRT(format,...) printf("[File:%s, Line:%d] "format, __FILE__, __LINE__, ##__VA_ARGS__)