debug

 

公司代码如何设定debug:在开发的时候需要打印信息,但代码完成后,应该把不重要的信息都停止打印;这样的话,需要把打印分种类,stdout || stderr等等

在公司代码里看到这样:

//#undef  DEBUG_PRINTF   //不打印输出 ,默认情况

#define DEBUG_PRINTF  //我改的,为了打印

#if defined(AOM_DAEMON)      //功能需要
#define  GET_MILLISEC        get_milliseconds()
#else
#define  GET_MILLISEC        0LL
#endif


#if NO_DEBUG
#    define _TRACE_DBG(f, ...)     do {} while(0)    //普通debug就不要打了
#    define _TRACE_ERR(f, ...)     do { syslog(LOG_LOCAL1 | LOG_ERR,   "%lld: %s: "f, GET_MILLISEC, __FILE__, __VA_ARGS__);} while(0)      //error直接入库
#else
# ifdef DEBUG_PRINTF    //如果开启debug模式,可以选择直接打印
#    define _TRACE_ERR(f, ...)     fprintf(stderr, "%lld: %s: "f, GET_MILLISEC, __FILE__, __VA_ARGS__)
#    define _TRACE_DBG(f, ...)     fprintf(stdout, "%lld: %s: "f, GET_MILLISEC, __FILE__, __VA_ARGS__)
#  else
#    define _TRACE_ERR(f, ...)     syslog(LOG_LOCAL1 | LOG_ERR,   "%s: "f, __FILE__, __VA_ARGS__)
#    define _TRACE_DBG(f, ...)     syslog(LOG_LOCAL1 | LOG_DEBUG, "%s: "f, __FILE__, __VA_ARGS__)
#  endif
#endif

问题:宏定义为什么要这样写??为什么要用 do {} while(0)????

#define _TRACE_GPIO(f, ...)       do {if (aom_trace_gpio)_TRACE_ERR(f,__VA_ARGS__); else _TRACE_DBG(f,__VA_ARGS__);}while(0)

get:__FILE__  ,__VA_ARGS__(以上面的为例,把扩展的参数直接传入后面的执行函数体里)

 

#define debug(...) printf(__VA_ARGS__)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值