#define ERR_DEBUG_SWITCH 1
#ifdef ERR_DEBUG_SWITCH
#define pr_err(fmt,args...) printf("\nFile:<%s> Fun:[%s] Line:%d\n "fmt, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define pr_err(fmt,args...) /*do nothing */
#ifdef ERR_DEBUG_SWITCH
#define pr_err(fmt,args...) printf("\nFile:<%s> Fun:[%s] Line:%d\n "fmt, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define pr_err(fmt,args...) /*do nothing */
#endif
分析一下 :
(1)是否打印输出
要打印输出则定义
#define ERR_DEBUG_SWITCH 1
不打印输出则屏蔽该定义
//#define ERR_DEBUG_SWITCH 1
(2)打印信息内容:
__FILE__, __FUNCTION__, __LINE__
分别是:文件名,函数名,行数。
想要什么输出什么
(3)c++如何能尽量不使用define实现这个功能呢?