为了账号安全,请及时绑定邮箱和手机立即绑定

用C表示的枚举的大小是多少?

用C表示的枚举的大小是多少?

C
汪汪一只猫 2019-07-05 15:00:32
用C表示的枚举的大小是多少?我正在创建一组枚举值,但是我需要每个枚举值都是64位宽。如果我没记错的话,枚举的大小一般与int相同;但我想我在某个地方读到了编译器可以使枚举保持值所需的任何宽度(至少在GCC中是这样)。那么,有可能有64位宽的枚举吗?
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

enum只有保证足够大才能容纳int价值。编译器可以根据定义的枚举常量自由选择实际使用的类型,因此如果编译器可以表示定义的值,则可以选择较小的类型。如果需要不适合于int为此,您需要使用特定于编译器的扩展。


查看完整回答
反对 回复 2019-07-05
?
呼如林

TA贡献1798条经验 获得超3个赞

虽然前面的答案是正确的,但一些编译器可以选择打破标准,并使用包含所有值的最小类型。

例举GCC(文件载于GCC手册):

enum ord __attribute__ ((__packed__)) {
    FIRST = 1,
    SECOND,
    THIRD};STATIC_ASSERT( sizeof(enum ord) == 1 )


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 884 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信