是不同编译器(gcc,visual c和其他?)之间枚举的大小是否相同?也就是说,特定枚举的sizeof()是否与遵循C/C++标准的每个编译器一样给出相同的值?不同编译器的枚举大小(以字节为单位)
回答
号
在C和C++的枚举将具有的尺寸使得所有的值可以被表示,并与整数类型兼容。不同的编译器可能使用不同的算法来选择类型(如果它没有被另一个标准如明确定义的ABI所指定)。 (C++ 11允许指定一个新的语法的基础类型)
不一定:C允许编译器选择枚举值的类型,就像根据你的答案一样,C++。参见[C标准](http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf)中的6.7.2.2/4节。 – pmg
此外,在C++ 0x中,您可以使用新的* enum类*指定将用于支持枚举值的整数类型。 –
@pmg,谢谢。我不知道我在哪里。我查过它已经是C90的情况。 – AProgrammer
“每一枚举类型应与炭兼容,一个有符号的整数 型或无符号的整数类型。类型的选择是 实现定义的),但应能够表示枚举的所有成员的值。“
“...一个实现可能会延迟选择哪个整数类型 ,直到看到所有枚举常量。”
ISO/IEC 9899:1999(E)第105页
所以我们只有上边界的sizeof(ENUM)。在大多数我sizeof(枚举)= 4,但STM编译器作出sizeof(枚举)= 1/2/4取决于在枚举中写入的值的系统
编辑:你似乎可以设置您的枚举值之一max int以确保编译器选择整数作为枚举大小。
- 1. 以字节为单位给出的不准确的NSData大小
- 2. C18编译器typedef枚举数据大小
- 3. 获取HTTPRequest/HTTPResponse头字节大小(以字节为单位)
- 4. 如何计算以字节为单位的节点大小
- 5. 以字节为单位的UTF-8字符串大小
- 6. 以字节为单位的字典大小
- 7. 以字节为单位测量字符串的大小php
- 8. .NET枚举大小?
- 9. 以字节为单位的RSA签名的大小是多少?
- 10. 得到的NodeJS变量的大小以字节为单位
- 11. 以字节为单位的类的大小
- 12. svn修订版的大小(以字节为单位)
- 13. 以字节为单位的已用内存。 Linux堆块大小
- 14. 以字节为单位确定缓冲区的总大小
- 15. 如何确定PyTables数组的大小(以字节为单位)?
- 16. 以字节为单位的分组大小
- 17. 以字节为单位的大小(以KB为单位)对于sql字段中的字段
- 18. Http以字节为单位获取请求包大小
- 19. 编译器支持枚举值
- 20. 以字节为单位获取图像大小以检查不良图像
- 21. Xml在编译时枚举
- 22. Resharper警告将枚举枚举为UIntPtr,但没有编译器警告
- 23. C#标志枚举字大小
- 24. 添加字节时的不同编译器行为
- 25. 枚举大小<String>
- 26. iphone使用exif数据缩小图像的大小(以字节为单位)
- 27. 以字节为单位获取std :: string的字符串的大小
- 28. 大小以字节
- 29. 编译警告...从枚举类型'UIInterfaceOrientation'隐式转换为不同的枚举类型'UIDeviceOrientation'?
- 30. 为什么枚举编译为常量而不是静态值?
签名也可能不同。 –