定义带参数的C宏,方便输出调试信息

C中调试,肯定要有输出。而自带的输出总是不够方便:

  1. 打开时输出太多。
  2. 不知道是哪里输出的。

这个时候,需要自定义宏。自定义宏最麻烦的问题,怎么自带参数呢?吾有专用范例介绍给大家:

(__FUNCTION__如果没有,可以使用__func__)

//不同平台输出,只要改一句即可。也可以通过ifdefine处理。
#define WX_LOG_PRINT                wx_print

//为了简单化。
//有时间戳功能输出。
#define WX_LOG_HEAD                 char timetext[64]; timestampText(timetext); WX_LOG_PRINT("%s:%s(%4d)"
#define WX_LOG_TAIL                 "\n", timetext, __FUNCTION__, __LINE__

#define WX_LOG_NEWLINE()            {WX_LOG_PRINT("\n"                                    );}
#define WX_LOG_HERE()               {WX_LOG_HEAD          WX_LOG_TAIL                );}
#define WX_LOG_INFO(FMT, ...)  	    {WX_LOG_HEAD " " FMT  WX_LOG_TAIL, ##__VA_ARGS__ );}
#define WX_LOG_TEXT(TEXT)      	    {WX_LOG_HEAD " " "%s" WX_LOG_TAIL, TEXT          );}
#define WX_LOG_INT(INT)      	    {WX_LOG_HEAD " " "%d" WX_LOG_TAIL, INT           );}

//channel有多个,想知道是那个输出的,所以增加一个宏,channel->tag_name。语法如下:
#define WX_LOG_CHANNEL(FMT, channel, ...)  	LOG_INFO("%s " FMT, channel->tag_name, ##__VA_ARGS__)

print是可以输出日志的函数,不同平台更换。

带有时间错、函数名、行号,在开发阶段特别方便。

相信能给需要的朋友带来便利。

 

 

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页