打印
[STM32]

可变宏参数的应用

[复制链接]
875|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 | 只看该作者
很好,支持

使用特权

评论回复
5
醉心369|  楼主 | 2015-12-7 10:50 | 只看该作者

\033[1;31;40m  每一个参数什么意思,\033  [  1;   31  40m  分别是什么意思

使用特权

评论回复
6
Simon21ic| | 2015-12-7 13:58 | 只看该作者
醉心369 发表于 2015-12-7 10:50
\033[1;31;40m  每一个参数什么意思,\033  [  1;   31  40m  分别是什么意思

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

使用特权

评论回复
评论
醉心369 2015-12-13 16:42 回复TA
是的 
7
醉心369|  楼主 | 2015-12-13 17:11 | 只看该作者
我再c51中使用printf("%d\n ", __LINE__);,为什么不能得到期望的行

使用特权

评论回复
8
zhangbin_abc| | 2015-12-14 08:26 | 只看该作者
加一点可变宏的使用方**更好,这样别人看起来才明白。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝