Implicit function declarations and GCC 10
Segher Boessenkool
segher@kernel.crashing.org
Thu Jul 4 22:17:00 GMT 2019
On Thu, Jul 04, 2019 at 01:27:27PM +0200, Florian Weimer wrote:
> Implicit function declarations were removed from C99, more than twenty
> years ago. So far, GCC only warns about them because there were too
> many old configure scripts where an error would lead to incorrect
> configure check failures.
>
> I can try to fix the remaining configure scripts in Fedora and submit
> the required changes during this summer and fall.
>
> I would appreciate if GCC 10 refused to declare functions implicitly by
> default.
[ The warning for it is enabled by default with -std=c99 or later, and
with -Wall as well. And people still ignore that? Wow. ]
We already have an option for that (-Werror=implicit-function-declaration),
and it is an error by default with -pedantic-errors already. If you are
asking to make it an error by default, I second that; there needs to be a
wat to turn it off though. Maybe it should be an error for c99 and later
only, anyway?
> According to my observations, lack of an error diagnostic has turned
> into a major usability issue. For bugs related to pointer truncation,
> we could perhaps change the C front end to produce a hard error if an
> int value returned from an implicitly declared function is converted to
> a pointer.
No, if we allow implicit declarations at all, your proposal would error
on valid (but improbable :-) ) code. We should only ever give hard
errors if we *know* something is wrong.
> Implicit int we should remove as well. Checking configure scripts for
> both issues at the same time would not be much more work.
We could enable -Wimplicit-int by default for c99 and later, maybe even
its -Werror- version. This conflicts with at least -fms-extensions it,
seems, dunno what to do there.
Segher
More information about the Gcc
mailing list