Why is -Wold-style-definition off by default?
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
220.127.116.11p3 to be fatal).
I have posted a request to include -Wstrict-prototypes in -Wextra:
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)
#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).
P.S. Martin, please excuse me for the duplicate message.
More information about the Gcc-help