调试打印技巧分享

描述

在项目中直接使用printf输出不是一种好习惯, 一般都建议对调试输出进行二次封装,方便在项目交付阶段进行调试屏蔽,通过对不同优先级的配置,也方便在调试阶段调试,下方就是一个简单的封装:

 

#ifndef __LOG_H__
#define __LOG_H__


#include 
#include 


/* 定义打印类型 */
#define    LOG_LVL_EMERG  0            /*!< 紧急 */
#define   LOG_LVL_ERROR  (LOG_LVL_EMERG + 1)    /*!< 错误 */
#define   LOG_LVL_WARN  (LOG_LVL_EMERG + 2)    /*!< 警告 */
#define   LOG_LVL_INFO  (LOG_LVL_EMERG + 3)    /*!< 信息 */
#define   LOG_LVL_DEBUG  (LOG_LVL_EMERG + 4)    /*!< 调试 */
#define   LOG_LVL_TRACE  (LOG_LVL_EMERG + 5)    /*!< 追踪 */


#define   DISABLE         0
#define   ENABLED         1


#define   PRINTF_OMIT     DISABLE                 /*!< 使能输出 */
// #define   PRINTF_OMIT     ENABLED                 /*!< 关闭输出 */


#define log_printf(...)     printf(__VA_ARGS__)


#if (PRINTF_OMIT == DISABLE)
  #define LOG(level, ...)              
    do{                              
      if(level <= LOG_LVL_CTRL){   
        log_printf(__VA_ARGS__); 
      }                            
    }while(0)
#else
    #define LOG(level,...);
#endif


extern uint8_t LOG_LVL_CTRL;


void log_usart_init(void);


/* 使用 */
// LOG(LOG_LVL_DEBUG, "%d
",i);


#endif /* __LOG_H__ */

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分