不同编译器的枚举大小(以字节为单位)

时间:2011-09-07 13:51:26

标签: c++ c compiler-construction enums

2 个答案:

答案 0 :(得分:14)

没有。

在C和C ++中,枚举的大小应使所有值都能表示并与整数类型兼容。不同的编译器可以使用不同的算法来选择类型(如果它没有被另一个标准指定,例如明确定义的ABI)。 (C ++ 11允许使用新语法指定基础类型)

答案 1 :(得分:2)

  

“每个枚举类型应与char签名,签名   整数类型或无符号整数类型。类型的选择是   实现定义的)但应能够代表   枚举的所有成员的值。“

     

“......实现可能会延迟选择哪种整数类型   直到看到所有枚举常数。“

ISO / IEC 9899:1999(E)p.105

因此我们只有sizeof(enum)的上限。在大多数系统上,我有sizeof(enum)= 4,但STM编译器使sizeof(enum)= 1/2/4取决于枚举中的值

编辑:似乎你可以将你的一个枚举值设置为max int,以确保编译器选择整数作为枚举大小。