Good reasons why mingling declarations and statements is gnu89?

Bonzini bonzini@gnu.org
Tue Feb 4 20:03:00 GMT 2003


Is any reason why this C99 feature

    int a = 2;
    printf ("%d", a);
    int b = 3;
    printf ("%d", b);

is enabled by gnu89?  Or is it creeping featurism only?

I have at least three times released code that could only compile on gcc 3.x
when this can be perfectly avoidable.  Why I don't care much about it now,
it was a problem in the 3.0 days, when the feature was introduced and when
few people used the compiler because of problems compiling the Linux kernel.

For one thing, I thought that GNU extensions are there for adding power to
the language, which is not the case (named initializers predating C99, asm,
typeof, &&, and even nested functions all fit this purpose).  Secondly, this
falls in the same category for which -Wall enables warnings -- dubious,
easily fixable constructs.

--pedantic might be an option but I'd like to avoid littering the code with
macros to add __extension__ whenever I use the GCC label-of-address
extension (guarded by __GCC__).

|_  _  _ __
|_)(_)| ),'
------- '---




More information about the Gcc mailing list