是不同編譯器(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. 以字節爲單位確定緩衝區的總大小
簽名也可能不同。 –