ANSI C标准中的预定义宏(也是常用的):
__LINE__:在代码中插入当前行号
__func__:在代码中插入当前行所在的函数的函数名
__FILE__:在代码中插入当前文件的文件名
__DATE__:在代码中插入当前编译的日期
__TIME__:在代码中插入当前编译的时间
预定义宏的用法
预定义宏能打印当前行的各种信息,所以一般都用来在项目中作为打印函数(printf)的替代,以实现更加精准去定位错误代码。
//DBUG,ERROR 自定义的,一个用于调试,一个用于打印出错信息
#define _debug 5
#define _DBUG 3
#define _ERROR 1
//fprintf函数:按格式打印
#define TPRINT(name, message, ...)\
do\
{\
fprintf(stderr, "[%s][%s] line[%d] " message, name, __func__, __LINE__, ##__VA_ARGS__);\
fflush(stderr);\
}while(0)
//message为你需要打印的信息
#define MY_PRINT(int flag, message, ...) \
do\
{\
if(_debug >= flag)\
{\
TPRINT("server_info", message, ##__VA_ARGS__);\
}\
}while(0)
#endif
在实际代码中就和fprintf函数的使用没什么区别:
279 void UdpRecMsg()
280 {
281 MY_PRINT(_DBUG, "\n");
282 MY_PRINT(_ERROR, "prepare to receive message: \n");
283 }
看运行之后的打印效果: