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个字节。

    懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
  • 相关阅读:
    file_get_contents高級用法
    php缓存技术常用函数
    php爬虫的两种思路
    jQuery判断文本框是否为空
    Asp.net 实现图片缩放 无水印(方法二)
    C# winform关于DataGridView的一些操作
    PHP判断访问者手机移动端还是PC端的函数
    本地图片显示在网页
    如何安装 Composer
    国内开源镜像站
  • 原文地址:https://www.cnblogs.com/Rainingday/p/14647724.html
Copyright © 2011-2022 走看看