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;