枚举类型的简单扩展学习

电子说

1.3w人已加入

描述

枚举类型的使用分两步:

1.定义一个特定的枚举类型

2.定义该枚举类型的变量并使用

以下学习内容均已经过实测:

1.定义枚举类型的值只能是整型常量,正数、负数和零都可以,但不可以是浮点数

2.对枚举类型做sizeof试验:

(1)我在stm32单片机上试验,也即ARM编译器上,枚举类型的存储大小按定义的值里面需要占内存最大的给,即1、2、4、8都有可能,遵循够用原则

(2)而在windows上试验,即GNU GCC编译器上,枚举类型的存储大小固定为4(但当定义中有超过4个字节大小的值时,存储大小变为8)

(3)无论哪个编译器,枚举类型的值最长只能为8个字节,更长的大小不接受

试验参考代码,可以自己改定义中的值大小去测结果:

enum DAY
{
  MON = 0, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
int main()
{
  printf("sizeof(day):%d\\r\\n", sizeof(day));
  printf("sizeof(enum DAY):%d\\r\\n", sizeof(enum DAY));
  getchar();
}

3.如何用extern修饰枚举类型

(1)错误的修饰代码,在类型的定义前加extern将起不到任何作用,因为extern是用来修饰变量的。以下代码不会报错,但会警告,extern出现在这里起不到任何作用

extern enum DAY
{
  MON = 0, TUE, WED, THU, FRI, SAT, SUN
};

(2)正确的修饰代码,在枚举变量定义前加extern

extern enum DAY day;
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分