This is the mail archive of the
mailing list for the GCC project.
Re: C99 conformance bug in gcc-3.1
On 31-May-2002, Joseph S. Myers <firstname.lastname@example.org> wrote:
> Zero-sized array members *do* behave differently from flexible array
> members. Zero-sized members can occur in the middle of structures,
> whereas we disallow this for flexible array members. We only allow (as an
> extension) static initialization of flexible array members - users wanting
> that had to change their code from zero-sized arrays to flexible array
> members. So it's natural to continue this by implementing the various
> other constraints (as unconditional hard errors, not pedwarns) for
> flexible array members only.
Well, those are differences in legality (and diagnostics),
not differences in behaviour. Each different syntax
may give you a different subset of the available features,
but in cases where both are legal, the result is the same.
I suppose the differences between the two syntaxs could be
a little annoying and confusing, but this would certainly be
Using different layouts for the different syntaxes would mean
that you get different results at run-time depending on which
syntax you used. That would be much worse, IMHO.
> glibc uses the different variant features in its headers (depending on
> compiler version) as if they are compatible, so some care is needed in
> working out whether an ABI change to fix the layout for flexible array
> members would affect the structures used by glibc.
The Mercury runtime system does this too.
Fergus Henderson <email@example.com> | "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.