zoukankan      html  css  js  c++  java
  • STM32平台,MDK5编译,枚举变量的大小

    标准C并没有明确规定枚举类型占用空间的大小,标准中只是说“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,同时标准中也说明了:“枚举类型中的枚举值必须要能够用一个int类型表述”,也就是说,枚举类型的尺寸不能够超过int类型的尺寸,但是是不是必须和int类型具有相同的尺寸呢?

    上面的标准已经说得很清楚了,只要能够容纳最大的枚举子的值的整数就可以了,那么就是说可以是char、short和int。
    不同的C编译器,对enum类型的大小作了不同的定义,而程序员是不能人为的修改枚举类型占用空间的。

    今天工作用到了,想查一下枚举类型占多少个字节,

    typedef enum 
    {
        CN_LANGUAGE = 1,
        EN_LANGUAGE = 0xff,
    } System_Language;

    测试:

    typedef enum 
    {
        CN_LANGUAGE = 1,
        EN_LANGUAGE = 0xffff,
    } System_Language;

    测试:

     当我试图,把EN_LANGUAGE赋值0xFFFFFFFF时,MDK5已经报警了。。。。

    结论:STM32平台,MDK5编译,枚举变量的大小,为随着最大的枚举值而改变,可以是 1,2, 4个字节,但是由于枚举值不能超过int最大值,所以最大为4个字节。

    懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
  • 相关阅读:
    Mac zsh: command not found zsh 所有命令在终端失效
    Java根据FreeMarker模板生成Word(doc)文档(带图片)
    2021年Java面试总结——自我篇
    toArray转换踩坑 java.lang.ClassCastException
    并发和并行
    protoBuf3学习
    StringBuffer和StringBuilder区别
    深拷贝和浅拷贝
    从不订购的客户
    使用jenkins遇到的问题汇总
  • 原文地址:https://www.cnblogs.com/Rainingday/p/14647724.html
Copyright © 2011-2022 走看看