es el tamaño de una enumeración siempre el mismo entre los diferentes compiladores (gcc, visual c y otros?). Es decir, ¿sizeof() de una enumeración específica da los mismos valores con cada compilador que sigue los estándares de C/C++?Tamaño de las enumeraciones en bytes de compiladores diferentes
Respuesta
No.
Tanto en C y C++ una enumeración tendrá un tamaño tal que todos los valores pueden ser representados y ser compatible con un tipo entero. Los diferentes compiladores pueden usar diferentes algoritmos para elegir el tipo (si no está especificado en otra norma, como un ABI claramente definido). (C++ 11 permite especificar el tipo subyacente con una nueva sintaxis)
No necesariamente: C permite que el tipo de valores de enumeración sea elegido por el compilador, al igual que, de acuerdo con su respuesta, hace C++. Ver la sección 6.7.2.2/4 en [el Estándar C] (http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf). – pmg
Además, en C++ 0x puede usar la nueva * clase enum * para especificar el tipo de entero que se utilizará para respaldar los valores de enumeración. –
@pmg, gracias. No sé de dónde saqué eso. Comprobé que ya era el caso en C90. – AProgrammer
"Cada tipo enumerado será compatible con char, un tipo entero con signo , o un tipo entero sin signo. La elección del tipo es definido por la implementación), pero debe ser capaz de representar los valores de todos los miembros de la enumeración. "
"... Una implementación puede retrasar la elección de qué tipo entero hasta que se hayan visto todas las constantes de enumeración."
ISO/IEC 9899: 1999 (E) p.105
Así que sólo tenemos límites superiores para sizeof (ENUM). En la mayoría de los sistemas tenía sizeof (enum) = 4, pero el compilador de STM hizo sizeof (enum) = 1/2/4 según los valores escritos en enumeración
Editar: parece que puede establecer uno de los valores de su enum para max int para garantizar que el compilador elija entero como tamaño de enumeración.
- 1. Mezclar bibliotecas de diferentes compiladores de C++
- 2. ¿Las diferentes actualizaciones JDK producen diferentes códigos de bytes Java?
- 3. ¿Tamaño de bytes personalizado?
- 4. atributos de función pure/const en compiladores diferentes
- 5. la comprensión de la necesidad de compiladores para diferentes plataformas
- 6. Comprensión de las enumeraciones scala
- 7. ¿Advertencias que se dispararán consistentemente en diferentes compiladores?
- 8. svn tamaño de revisión en bytes
- 9. tamaño del conjunto de estructuras en bytes
- 10. Uso de las enumeraciones en ctypes.Structure
- 11. ¿Cómo aplicar diferentes opciones de compilación para diferentes compiladores en cmake?
- 12. ¿Son incompatibles las implementaciones de herencia virtual C++ de los compiladores diferentes?
- 13. ¿Cuáles son las diferentes formas de manejar 'Enumeraciones' en el servidor SQL?
- 14. tienda una ordenación de las enumeraciones en Java
- 15. Tamaño de bytes de un NSDictionary
- 16. Tamaño de las estructuras en .NET
- 17. compiladores dan diferentes respuestas para Proyecto Euler # 22
- 18. C# enumeraciones Públicas de las clases
- 19. valores de las enumeraciones de Java con los genéricos
- 20. ¿Cómo se implementan las enumeraciones en Java?
- 21. Enumeraciones de Java - Cambie las declaraciones frente al patrón de visitante en las Enumeraciones - ¿Beneficios de rendimiento?
- 22. no puede compilar las enumeraciones en Eclipse
- 23. Cómo indicar a Makefile que use compiladores diferentes
- 24. Mide el tamaño de cadena en Bytes en php
- 25. Enumeraciones persistentes en las tablas de la base de datos
- 26. ¿Por qué las enumeraciones de TypeLib no están expuestas como enumeraciones en Visual Basic 6.0?
- 27. ¿Vale la pena convertir las enumeraciones de cadena de la base de datos en enteros?
- 28. Razones para usar las constantes de NSString sobre las enumeraciones
- 29. Android: Canvas.drawText() Tamaño de texto en diferentes resoluciones de pantalla
- 30. Http get request tamaño de paquete en bytes
Y la firma también puede variar. –