对printf的封装

问题引入:

case ScaleInit:        printf("case ScaleInit\n");Do_Scale_Init();

我希望一些打印在自己开发的时候可以工作,在释放的时候就不输出了。

 

程序设计:对printf封装,做一个权限标识

uint32_t    sysDebugFlag=0xFF;
                                      
#define ERR                   1
#define WARN                2
#define INFO                  3
#define DEBUG              4

#define LOG_PRESENT_BIT(x)        (((uint32_t)((uint32_t)1<<(x))))            //获得第X位
#define LOG_BIT_ON(m, b)       (((m) & LOG_PRESENT_BIT(b)) != 0)/*真-是1 假-是0*/
#define LOG_SET_BIT(m, b)             ((m) |= LOG_PRESENT_BIT(b))      /*设位*/
#define LOG_CLEAR_BIT(m, b)       ((m) &= ~LOG_PRESENT_BIT(b))   /*置位*/

本来以为#define LOG_BIT_ON(m, b)可以写成#define LOG_BIT_CHECK(m, b)或者#define IS_LOG_BIT_ON(m, b)

这个样子的,因为是返回0 1的,其实用的时候:  if(LOG_BIT_ON(sysDebugFlag,level)所以坚持原稿。


#define log(level, fmt, args...)  do{\
    if(LOG_BIT_ON(sysDebugFlag,level)){\
        if(level == ERR){\
        printf("\033[0;31m");}\
        else if(level == WARN)\
        printf("\033[0;32m");\
        else if(level == INFO)\
        printf("\033[0;33m");\
        else if(level == DEBUG)\
        printf("\033[0;37m");\
        printf("[#]");\
        printf("[%d%]" , osGetCPUUsage());\
        printf_time();\
        printf(fmt, ##args);\
        printf("\033[0;39m");\
    }\
}while(0)

 

 

 

https://blog.youkuaiyun.com/wilson1068/article/details/42970551

WIN10串口助手其实看不出 看到的是

 

 

uint32_t    sysDebugFlag=0xFF;
                                      
#define ERR                 1
#define WARN                2
#define INFO                3
#define DEBUG               4

#define LOG_PRESENT_BIT(x)        (((uint32_t)((uint32_t)1<<(x))))
#define LOG_BIT_ON(m, b)          (((m) & LOG_PRESENT_BIT(b)) != 0)/*真-是1 假-是0*/
#define LOG_SET_BIT(m, b)         ((m) |= LOG_PRESENT_BIT(b))/*设位*/
#define LOG_CLEAR_BIT(m, b)       ((m) &= ~LOG_PRESENT_BIT(b))/*置位*/


#define log(level, fmt, args...)  do{\
    if(LOG_BIT_ON(sysDebugFlag,level)){\
		if(level == ERR){\
		printf("\033[0;31m");}\
        else if(level == WARN)\
        printf("\033[0;32m");\
        else if(level == INFO)\
        printf("\033[0;33m");\
        else if(level == DEBUG)\
        printf("\033[0;37m");\
        printf("[#]");\
        printf("[%d%]" , osGetCPUUsage());\
        printf_time();\
        printf(fmt, ##args);\
        printf("\033[0;39m");\
    }\
}while(0)



void log(level, fmt, args...)  
do{
    if(LOG_BIT_ON(sysDebugFlag,level))
	{
		if(level == ERR)
			printf("\033[0;31m");
        else 
		if(level == WARN)
			printf("\033[0;32m");
        else 
		if(level == INFO)
			printf("\033[0;33m");
        else 
		if(level == DEBUG)
			printf("\033[0;37m");
			
        printf("[#]");
        printf("[%d%]" , osGetCPUUsage());
        printf_time();
        printf(fmt, ##args);
        printf("\033[0;39m");
    }
}while(0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值