C 中枚举的大小是多少?

2024-05-08

我正在创建一组枚举值,但我需要每个枚举值都是 64 位宽。如果我没记错的话,枚举通常与 int 大小相同;但我想我在某处读到(至少在 GCC 中)编译器可以使枚举具有保存其值所需的任何宽度。那么,是否可以有一个 64 位宽的枚举呢?


摘自当前 C 标准 (C99):http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf

6.7.2.2 枚举说明符
[...]
约束条件
定义枚举常量值的表达式应为整数 具有可表示为 int 的值的常量表达式。
[...]
每个枚举类型应与 char、有符号整数类型或 无符号整数类型。类型的选择是实现定义的,但应 能够代表枚举中所有成员的值。

并不是说编译器擅长遵循标准,但本质上是:如果您的枚举包含除 int 以外的任何内容,那么您就陷入了“不受支持的行为,可能会在一两年内困扰您”的境地。

更新:最新公开的 C 标准 (C11) 草案:http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf包含相同的子句。因此,这个答案对于 C11 仍然成立。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中枚举的大小是多少? 的相关文章

随机推荐