declaring C enum types
Fergus Henderson
fjh at cs.mu.OZ.AU
Thu Oct 17 09:38:27 EDT 2002
On 17-Oct-2002, Michael Weber <michaelw at foldr.org> wrote:
> On Thu, Oct 17, 2002 at 02:25:44AM -0700, John Meacham wrote:
> > I am pretty sure that ISO C says that enums are equivalant to ints
> > always. of course, not all implementations may be ISO C compliant.
> > John
>
> Right.
No, this is wrong.
> C99#6.4.4.3:
> [...]
> [#2] An identifier declared as an enumeration constant has
> type int.
The enumeration constants have type `int'.
However, the enumeration type itself is a different type.
The enumeration type need not have the same size or representation as int.
| 6.7.2.2 Enumeration specifiers
|
| [#4] 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.
| Footnote 108:
| An implementation may delay the choice of which integer
| type until all enumeration constants have been seen.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
More information about the FFI
mailing list