调试打印技巧分享

在项目中直接使用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,...);#endifextern uint8_t log_lvl_ctrl;void log_usart_init(void);/* 使用 */// log(log_lvl_debug, %d,i);#endif /* __log_h__ */  


Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程
韩法院禁止LGD前员工向中国公司跳槽
无线传感器网络在车位控制中有哪些应用
新版双轨奖金制度直销软件自动结算管理系统
基于嵌入式Linux与QT的汽车虚拟仪表设计[图]
调试打印技巧分享
欧洲半导体要崛起了?
美国俄勒冈州本德市开始LED路灯改造
荣耀magic预约量惊呆苹果,上市秒空犹豫的同学你已经晚了
韩国今年或将成全球最大半导体设备市场
目前全球正普遍使用的罗氏(Roche)检测设备
采用固定频率峰值电流模式拓扑的降压型DC/DC控制器
生物识别和人脸识别的区别
首款国产全数字PET进入临床试验收官阶段,将帮助更多患者解决难题
新能源储能电容应用之燃料电池汽车辅助储能系统
光通信抢占5G发展制高点,激光应用迈向高精尖
国际汽配展/美国汽配展/2006拉斯维加斯国际汽车零配件及售
零欧电阻在电路设计中的使用技巧分享
bios与cmos区别是什么
python基础知识点(四)