https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91092

--- Comment #18 from Rich Felker <bugdal at aerifal dot cx> ---
Just to clarify, an "implicit function declaration" is use of a token that
could be an identifier as the operand of the function call operator (), with no
declaration for the identifier in scope. A non-prototype declaration is still a
declaration.

The specific language from C89 supporting implicit function declarations is in
3.3.2.2 ΒΆ4:

"If the expression that precedes the parenthesized argument list in a function
call consists solely of an identifier, and if no declaration is visible for
this identifier, the identifier is implicitly declared exactly as if, in the
innermost block containing the function call, the declaration

         extern int  identifier();

appeared."

Later versions of the standard do not have such a special case; the operand has
to be a valid expression with function pointer type.

Reply via email to