0
点赞
收藏
分享

微信扫一扫

定义带参数的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是可以输出日志的函数,不同平台更换。

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

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





举报

相关推荐

0 条评论