0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

枚举类型的简单扩展学习

冬至子 来源:吾爱单片机 作者:echigh 2023-05-25 15:45 次阅读

枚举类型的使用分两步:

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;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM芯片
    +关注

    关注

    1

    文章

    125

    浏览量

    21428
  • GNU
    GNU
    +关注

    关注

    0

    文章

    143

    浏览量

    17468
  • STM32单片机
    +关注

    关注

    59

    文章

    549

    浏览量

    58598
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3349
收藏 人收藏

    评论

    相关推荐

    使用枚举类型表示状态机进入死循环

    在定义状态机中的状态时,除了可以使用宏(define)或者参数(parameter)声明定义外,还可以使用枚举类型
    的头像 发表于 11-07 17:46 894次阅读
    使用<b class='flag-5'>枚举</b><b class='flag-5'>类型</b>表示状态机进入死循环

    C语言必备知识枚举

    枚举类型是ANSI C新标准所增加的。如果一个变量只有几种可能的值,可以定义为枚举类型。所谓“枚举是指将变量的值一一列举出来,变量的值只限于
    的头像 发表于 11-29 16:07 722次阅读

    labview中的基本函数发生器应用时信号类型接线枚举有误

    各位好,我是一个labview初学者,在学习利用基本函数发生器编写程序时,信号类型一连线接枚举控件,结果出现“枚举冲突”,不知是为何?请高手指导,多谢。上传了一个连线后的
    发表于 03-15 20:36

    labview小白求教枚举类型控件

    学习labview还才3天,看的书是《labview宝典》,现在正好看到78页,关于“获取日期/时间字符串”函数,其中说到日期格式是枚举类型,但是我实际测试,给枚举控件插入了三个项,值
    发表于 12-20 21:01

    详细讲解c语言enum枚举类型

    详细讲解C语言enum枚举类型在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型。所谓
    发表于 12-21 23:22

    枚举类型最后面增加项报错

    各位大神:我的枚举类型RadioState,在最后面增加一项,之后程序中很多用到RadioState的地方报错,这个是什么原因造成的?下图是我没有改之前的枚举类型信息:下图是我添加了一
    发表于 05-15 12:02

    深入理解java枚举类型enum用法

    ; StringFRI = Fri; StringSAT = Sat; StringSUN = Sun; } 语法(定义) 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类
    发表于 09-27 11:49 0次下载

    枚举是C语言中的一种基本数据类型

    在C语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。不过在一
    的头像 发表于 09-25 15:45 8619次阅读
    <b class='flag-5'>枚举</b>是C语言中的一种基本数据<b class='flag-5'>类型</b>

    go语言枚举类型怎么用

    go 语言枚举类型是这么用的?在什么场景下会用到枚举?本文对 go 语言枚举做了详细讲解。 枚举,是一种重要的数据
    的头像 发表于 09-02 09:43 5136次阅读

    数字硬件建模SystemVerilog-枚举数据类型

    上一节介绍了已经被淘汰的$unit声明空间,今天我们来看看一种重要的数据类型-枚举数据类型
    的头像 发表于 07-01 17:44 1665次阅读

    SystemVerilog中枚举类型的使用建议

    SystemVerilog中枚举类型虽然属于一种“强类型”,但是枚举类型还是提供了一些“不正经”的用法可以实现一些很常见的功能,本文将示例一
    的头像 发表于 09-01 14:20 1613次阅读

    浅析SystemVerilog中的枚举类型

    枚举类型定义了一组具有名称的值,在没有指定值时默认是int型数值。
    的头像 发表于 10-13 09:44 1541次阅读

    Java枚举的特点及用法

    在 Java 枚举出现之前,通常会使用常量类来表示一组固定的常量值,直到Java 1.5之后推出了枚举,那么枚举类型有哪些特点,它比常量类又好在哪里呢。 本文将分析一下
    的头像 发表于 09-30 10:02 1346次阅读

    java switch case值能为枚举值吗

    Java中的switch语句可以接受枚举类型的值作为参数。在Java中,枚举是一种特殊的数据类型,它定义了一个固定数量的命名常量。因此,可以将枚举
    的头像 发表于 11-30 14:41 4985次阅读

    枚举有多大?c语言枚举end的作用是什么?

    枚举有多大?c语言枚举end的作用是什么? 枚举在C语言中是一种常见的数据类型,用于定义一组相互关联的常量或者变量。它通常用于表示一系列可能的取值,使得程序更加易读和易维护。在C语言中
    的头像 发表于 01-19 14:19 544次阅读