https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82922
Bug ID: 82922
Summary: Request: add -Wstrict-prototypes to -Wextra as K&R
style is obsolescent
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: antox at ml dot lv
Target Milestone: ---
K&R style function declarations and definitions are marked obsolescent (C89
3.9.4,5, C99 6.11.6,7, C11 6.11.6,7). Maybe it is reasonable to include
-Wstrict-prototypes in -Wextra (before it becomes appropriate in -Wall)?
K&R style still can be encountered in the wild and, to someone uninitiated, may
appear like a less cluttered alternative. gcc-5.3.0 -Wall -Wextra compiles the
following code without warning about missing prototype and unchecked arguments:
double f(t, x, y)
double t, x, y;
{ }
int main(void) {
//f(0.0, 1.0, 1.0);
f(0, 1, 1); // UB
}
Unprototyped functions can be diagnosed by combining
-Wimplicit-function-declaration and -Wstrict-prototypes. The former is in -Wall
and imposed since C99.
-Wold-style-definition cases are covered by -Wstrict-prototypes too.
-Wold-style-declaration (obsolescent: C89 3.9.3, C99 6.11.5, C11 6.11.5) is
included in -Wextra.
There has been a bit of discussion on gcc-help:
https://gcc.gnu.org/ml/gcc-help/2017-11/msg00001.html