宏定义变参printf

经常在实际的调试过程中,使用最基本的调试方法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__)
 

猜你喜欢

转载自blog.csdn.net/duobaohongtu3/article/details/81674345
今日推荐