On Tue, Apr 21, 2015 at 07:32:30PM +1000, Bruce Evans wrote:
> On Tue, 21 Apr 2015, David Chisnall wrote:
>
> > On 20 Apr 2015, at 17:19, Bruce Evans <b...@optusnet.com.au> wrote:
> >>
> >> Enums should never be used in ABIs, since their size can be anything
> >> large enough.
> >
> > The rules for the size of enums also differ between C and C++, though clang
> > (and, I think, gcc) support an attribute for specifying the enum type.
> >
> >> They also cause namespace problems. The whole enum declaration must
> >> be exposed in any header that uses an enum type.
> >
> > Both C and C++ permit forward declarations of enums for use in function
> > prototypes and so on, e.g.:
> >
> > enum foo;
> > void
> > bar(enum foo);
>
> No, they cannot do this since the size may depend on the internals of the
> enum:
>
> TendDRA-5.0.0:
> "z.c", line 1: Error:
> [ISO C90 6.5.2.3]: Can't declare the enumeration 'enum foo'.
>
This is not true for C. The i386 ABI specification, from year _1997_,
states that enum must be 4-bytes unsigned entity, 4-bytes aligned. See page
28 of abi386-4.pdf.
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"