[Bug c/67386] missing diagnostic on a use of an undeclared function
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Fri Aug 28 17:55:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67386
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
On Fri, 28 Aug 2015, msebor at gcc dot gnu.org wrote:
> GCC isn't completely consistent in diagnosing references to undeclared
> functions. In the test case below, it issues an error for only the last three
> out of the four definitions of foo. It issues a warning for the first one,
> even though it too references an undeclared identifier.
This is a consequence of C90 implicit declarations being accepted as an
extension in C11 mode. The implicit declaration from the call in the
first case is in scope for the non-call reference. In no other case is
there a declaration, even implicit, in scope for such a reference.
> Versions prior to 5.1 diagnosed only the second and fourth forms.
Previous versions defaulted to gnu89. In C99 and later, each half of an
if statement has its own scope; before C99, the scope of the implicit
declaration in case 3 would have been the whole of the body of the
function.
More information about the Gcc-bugs
mailing list