* Segher Boessenkool: > 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. ]
Yes, we just got a glibc bug report about it. Even seasoned programmers miss it when it's buried in build logs. > 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? Yes, it should be an error by default, without any flags. Which is gnu11 mode by now, I think. So it's not sufficient to do this for c99/c11 mode. >> 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. Yes, it should be valid code on 32-bit targets, which is why it's so common. >> 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. We can keep this a separate discussion if it helps. Thanks, Florian