c99支持可变参数的宏定义,这会让我们编写打印宏方便很多,自己写了一个,stm32下面的
源代码
//Dreamxi: color printf ---->cpf
//eg:cpf(ALLOW_PUT,RED,"this is cpf:%d",cnt);
#define ALLOW_PUT 1
/*
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
*/
/* 红 绿 蓝 白 黄 紫红 青蓝 */
enum {RED=0,GRE,BLU,WHI,YEL,ZH,GB};
#define cpf(DEBUG_MSG,COR,...) do{\
if(DEBUG_MSG==1)\
{\
if(COR==RED)\
{\
u_printf("\033[1;31;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
else if(COR==GRE)\
{\
u_printf("\033[1;32;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
else if(COR==BLU)\
{\
u_printf("\033[1;34;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
else if(COR==WHI)\
{\
u_printf("\033[1;37;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
else if(COR==YEL)\
{\
u_printf("\033[1;33;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
else if(COR==ZH)\
{\
u_printf("\033[1;35;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
else if(COR==GB)\
{\
u_printf("\033[1;36;40m");\
u_printf("[file:%s func:%s line:%d]-",__FILE__,__FUNCTION__,__LINE__);\
u_printf(##__VA_ARGS__);\
}\
u_printf("\033[0m\r\n");\
}\
}while(0)
|