调试宏第一种定义方法:
#define DEBUG_OUT(fmt,args...) \
{ \
printf("File:%S Function: %s Line :%d",__FILE__,__FUNCTION__,__LINE__); \
printf(fmt,##args); \
}
__FILE__,__FUNCTION__,__LINE__为GCC编译器下的宏,分别可以输出当前文件,当前函数,当前行。
##:连接操作符。
例如:
int a=100;
int b=200;
DEBUG_OUT("a = %d ;b = %d ",a,b);
输出结果为
File:main.c Function:main Line:8 a=100;b=200
@注意,此种调试方法,DEBUG_OU();调用时后面加的分号,其实表示多了一句空语句,编译器不会产生语法错误。
调试宏第二种第一方法:
#define DEBUG_OUT(fmt,args...) \
printf("File:%s Functions: %s Line:%d"fmt, \
__FILE__,__FUNCTION__,__LINE__,##args)
在GCC中“123456”与“123”“456”是相同的。
@此方法fmt必须是一个字符串,不能是字符指针,不然会出错