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

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

我正在创建一组枚举值,但是我需要每个枚举值都是64位宽。如果我没记错的话,枚举的大小一般与int相同;但我想我在某个地方读到了编译器可以使枚举保持值所需的任何宽度(至少在GCC中是这样)。那么,有可能有64位宽的枚举吗?



汪汪一只猫
浏览 885回答 3
3回答

慕标5832272

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

呼如林

虽然前面的答案是正确的,但一些编译器可以选择打破标准,并使用包含所有值的最小类型。例举GCC(文件载于GCC手册):enum ord __attribute__ ((__packed__)) {     FIRST = 1,     SECOND,     THIRD};STATIC_ASSERT( sizeof(enum ord) == 1 )
打开App,查看更多内容
随时随地看视频慕课网APP