Joseph S. Myers wrote (in part):
> No prototype is different from no declaration at all. Implicit function
> declarations are not part of C99, so the code is in error in C99 mode.
OK, thanks. I (now) understand that the reference to a warning about a missing
protoype
does not apply. However, I don't see anything in section 6.5.2.2
(rev. 1999-12-01) that says that a function declaration or prototype
declaration must (or should) precede a call to the function. And GCC isn't
treating it
as an error, but rather is enabling the warning by default.
The code reads as follows (in c-objc-common.c):
/* If still unspecified, make it match -std=c99
(allowing for -pedantic-errors). */
if (mesg_implicit_function_declaration < 0)
{
if (flag_isoc99)
mesg_implicit_function_declaration = flag_pedantic_errors ? 2 : 1;
else
mesg_implicit_function_declaration = 0;
}
And mesg_implicit_function_declaration is initialized to -1 (c-common.c):
/* Nonzero means message about use of implicit function declarations;
1 means warning; 2 means error. */
int mesg_implicit_function_declaration = -1;