Why is -Wold-style-definition off by default?

Antons Suspans antox@ml.lv
Thu Nov 9 16:56:00 GMT 2017


On Wed, Nov 01, 2017 at 05:59:54PM -0600, Martin Sebor wrote:
> On 10/30/2017 06:20 AM, Antons Suspans wrote:
> > Why is -Wold-style-definition off by default and not implied by -Wall,
> > -Wextra? The following code might be a marginal example, which is
> > compiled without warning about missing prototype and unchecked args
> > (gcc-5.3.0 -Wall -Wextra ex.c).
>
> I recently wondered the same thing.  Functions without a prototype
> have been deprecated since C99.  As the C committee is starting to
> work on C2X it will consider removing (a subset of) deprecated features.
> I think it would make sense to include the option in -Wall now, well
> ahead of C2X being finalized (it arguably should been done years ago).
> If you'd like to see such a change I suggest opening a request in Bugzilla.

Thank you for your reply and information!

I was pondering this and, frankly, I am not sure I fully understand
the situation, and how gcc warnings are balanced between the standard,
the existent C code, and good practices (for instance, I'd expect C11
6.7.6.3p3 to be fatal).

I have posted a request to include -Wstrict-prototypes in -Wextra:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82922

The following options (and their antecedents) seemed related:

1. -Wimplicit-function-declaration (-Wimplicit | -Wall | -std=c99 | -std=gnu99 or later)
2. -Wimplicit-int                  (-Wimplicit | -Wall | -std=c99 | -std=gnu99 or later)
3. -Wmissing-parameter-type        (-Wextra)
4. -Wold-style-declaration         (-Wextra)
5. -Wold-style-definition
6. -Wstrict-prototypes
7. -Wmissing-declarations
8. -Wmissing-prototypes

#1 and #2 are both imposed since C99, and #3 is taken over by #2 since
C99. #7 and #8 are good for header discipline but don't seem crucial.
My concern was calling unprototyped functions and I think it is
completely covered by #1 + #6 (#5 cases hit #6 too). Perhaps #6 (i.e.
-Wstrict-prototypes) is not deserving a place along #1 in -Wall until
the standard changes accordingly, but maybe it is indeed viable in
-Wextra (#4 is there).

Antons

P.S. Martin, please excuse me for the duplicate message.



More information about the Gcc-help mailing list