This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Size of enum‏


On 05/02/12 17:29, Alexandre Almeida wrote:

What do you think about making enum types have only the size needed for the number of constants held? If an enum type has 256 constants or less, for example, it needs only one byte. If it has between 257 and 65536 constants, in the other hand, it needs two bytes.


I think you have the wrong mailing list - this is for the development of the gcc compiler, not for development /using/ gcc. You probably want gcc-help@gcc.gnu.org.


I'm sure someone will correct me if my details are wrong, but my understanding is this:

Enum types in C are all "int" - "signed int" by default, or "unsigned int" if one or more elements requires the range of unsigned int, or if one or more has an unsigned int suffix (e.g., "1u").

Enum types in C++ can be any integer type big enough to cover the required range. I think most C++ compilers use the smallest integer type that covers the range.

gcc has a switch "-fshort-enums" that makes the compiler use the smallest usable integer type for its enums, which is the effect you are looking for. Be careful when mixing modules (including libraries) with different settings for this flag - enum types will be incompatible between them.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]