是不同编译器(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. 枚举大小(以字节为单位)
- 2. 如何使用VC++编译器标志指定枚举大小
- 3. C18编译器typedef枚举数据大小
- 4. 以字节为单位给出的不准确的NSData大小
- 5. 获取HTTPRequest/HTTPResponse头字节大小(以字节为单位)
- 6. 如何计算以字节为单位的节点大小
- 7. 为什么不会引发异常?如果枚举大小小于100字节
- 8. 以字节为单位测量字符串的大小php
- 9. 以字节为单位的UTF-8字符串大小
- 10. 以字节为单位的字典大小
- 11. .NET枚举大小?
- 12. 以字节为单位的RSA签名的大小是多少?
- 13. 以字节为单位的类的大小
- 14. 得到的NodeJS变量的大小以字节为单位
- 15. 编译时枚举器的序列
- 16. 为什么不是由C编译器检查的枚举?
- 17. svn修订版的大小(以字节为单位)
- 18. Java:向量的大小(以字节为单位)
- 19. 获取文件的总大小以字节为单位
- 20. 原始响应的大小(以字节为单位)
- 21. 以字节为单位计算imagepickerdidFinishPickingMediaWithInfo中的视频大小
- 22. 计算HTTP请求发布的大小(以字节为单位)
- 23. C++获取EOL的大小(以字节为单位)
- 24. 以字节为单位的分组大小
- 25. Q中的表格大小(以字节为单位)
- 26. 以字节为单位的无序映射大小
- 27. Actionscript 3 - 以字节为单位获取ByteArray的大小
- 28. 以字节为单位的HTML元素大小Javascript
- 29. 以字节为单位的已用内存。 Linux堆块大小
- 30. 以字节为单位确定缓冲区的总大小
签名也可能不同。 –