[STM32] 可变宏参数的应用

[复制链接]
1173|8
 楼主| 醉心369 发表于 2015-12-5 21:06 | 显示全部楼层 |阅读模式
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)

 楼主| 醉心369 发表于 2015-12-5 21:07 | 显示全部楼层
u_printf("\033[1;31;40m");
弱弱地问一下:对于该函数的参数,每部分都是什么意思?
Simon21ic 发表于 2015-12-6 22:06 来自手机 | 显示全部楼层
设置终端的颜色
阿南 发表于 2015-12-7 08:51 | 显示全部楼层
很好,支持
 楼主| 醉心369 发表于 2015-12-7 10:50 | 显示全部楼层

\033[1;31;40m  每一个参数什么意思,\033  [  1;   31  40m  分别是什么意思
Simon21ic 发表于 2015-12-7 13:58 | 显示全部楼层
醉心369 发表于 2015-12-7 10:50
\033[1;31;40m  每一个参数什么意思,\033  [  1;   31  40m  分别是什么意思

记得没错的话,033应该是ESC,\ESC用于设置终端的各个参数的,包括颜色

评论

是的  发表于 2015-12-13 16:42
 楼主| 醉心369 发表于 2015-12-13 17:11 | 显示全部楼层
我再c51中使用printf("%d\n ", __LINE__);,为什么不能得到期望的行
zhangbin_abc 发表于 2015-12-14 08:26 | 显示全部楼层
加一点可变宏的使用方**更好,这样别人看起来才明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部