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"

Reply via email to