extern(C) enum
nkm1 via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Sep 16 12:34:58 UTC 2017
On Saturday, 16 September 2017 at 03:06:24 UTC, Timothy Foster
wrote:
> You are correct, however 6.7.2.2 "Enumeration specifiers"
> states: "Each enumerated type shall be compatible with char, a
> signed integer type, or an unsigned integer type. The choice of
> type is implementation-defined, but shall be capable of
> representing the values of all the members of the enumeration."
>
> I believe that means that if you have the following:
>
> enum ABC { A, B, C }
>
> Then A, B, and C are by themselves ints, but the enum type ABC
> can be a char if the compiler decides that's what it wants it
> to be.
Oops, you're right. Then the situation must be the same as in
C++? If enum ABC is by itself a parameter of a function, the
argument will be int (and if it weren't, it would be promoted to
int anyway), but if the enum is a part of a structure, then it
can be anything...
At least, if enumerators themselves are ints, the enum type
probably won't be larger than an int... small consolation :)
More information about the Digitalmars-d-learn
mailing list