单片机/MCU论坛
直播中

李明

11年用户 1033经验值
擅长:嵌入式技术 控制/MCU RF/无线
私信 关注
[文章]

枚举enum的使用

枚举和结构体是两个很好用编程语法,下面是三个枚举的使用方法。
  1. enum SYSERROR
  2. {
  3.         tiME_OUT = 1,
  4.         LOW_BAT =2,
  5.         NO_ACK = 3               
  6. };

  7. // 如果要定义一个枚举的变量可以这样
  8.         enum SYSERROR SysError;

  9. // 也可以在枚举的时候创建一个相应的枚举变量
  10. enum SYSERROR
  11. {
  12.         TIME_OUT = 1,
  13.         LOW_BAT =2,
  14.         NO_ACK = 3               
  15. }SysError;
  16. // 这样就在枚举的同时创建了一个为SysError的变量

  17. // 还可以把这个枚举重定义
  18. typedef enum
  19. {
  20.         TIME_OUT = 1,
  21.         LOW_BAT =2,
  22.         NO_ACK = 3
  23. }SysError_TypeDef;

  24. //创建一个枚举变量就可以这样
  25.         SysError_TypeDef        SysError;


个人比较喜欢第三种方式。

另外就是在使用过程中,遇到这样一个情况。
要列举出系统错误类型。
可以用
1.jpg
这是没有加进去的编译结果data=82.1, xdata=159,code=4452
QQ截图20180205173537.jpg
加进去编译结果data=82.1, xdata=164,code=4460
QQ截图20180206150206.jpg
定义枚举类型的系统错误类型编译后data=82.1, xdata=164,code=4460竟然没有变化。
QQ截图20180205175047.jpg
定义一个枚举系统错误类型的变量。data=82.1, xdata=165,code=4460仅仅xdata+1;
QQ截图20180205175104.jpg
给变量赋值。data=82.1, xdata=165,code=4465这时code+5编译器把错误类型都加入了code中。


从上面看出定义错误类型的种类用枚举方式比const数组要省RAM啊!


希望看到的大神指点一下,理解的是否有问题。


回帖(1)

王栋春

2018-2-7 12:54:20
学习了                           
举报

更多回帖

发帖
×
20
完善资料,
赚取积分