如何定义调试用的DEBUG打印宏

如何定义调试用的DEBUG打印宏 【原创】

 

 

在写代码的时候,非常有必要加一些DEBUG的打印信息,但是在release版本中,可以把这些打印信息去掉能缩减代码量。

 

因此,我们需要定义一个打印的DEBUG宏,当此宏未定义时,该打印实现为空。

 

如下:

 

 

#define __DEBUG_PRINT__

 

 

 

 

#ifdef __DEBUG_PRINT__                                              // 对于DEBUG版本,增加打印信息

 

static int debug_print( fmt, ... ){

       char buf[128] ;

       va_list arg ;

       va_start(arg, fmt)

       vsnprintf( buf , sizeof(buf), fmt, arg);                   // 把可变参数fmt格式化打印到buf缓冲区,类似sprintf的用法

       va_end(arg);

 

       printf("[DEBUG]  %s /n", buf );                             //把buf打印出来

};

 

#define  DEBUG_PRINT(_flag, _m , _fmt, ... )    do{    / 

    if(_flag & _m)                                                          /      /* 该打印信息必须要有个FLAG和一个位掩码开关,  */

       debug_print( );                                                           /* 只是一种分级打印或设置打印开关的实现方式而已 */

                                                            /

}while(0)

 

#else

 

#define DEBUG_PRINT(_flag, _m , _fmt , ... )                // 对于RELEASE版本,把__DEBUG_PRINT__宏关闭 

 

#endif

 

 

这里涉及到va_list可变参数的用法

重要的是DEBUG_PRINT这个宏的定义方法(用do_while结构)和 分级打印的思路(使用掩码或者别的FLAG开关等方式)

 

可以由许多许多不同的实现方式。

此方法仅供参考

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值