Re: Undefined functions in C

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ian Wienand <ianw@xxxxxxxxxxxxxxxxxx> writes:

> Googling around, you will find many people saying that C99 disallows
> undefined functions (e.g [1]), often citing C99 6.5.2.2.  My reading
> of this doesn't seem to suggest it disallows undefined functions; in
> fact it talks about type promotion rules for undefined functions.

I don't see that.  I see type promotion rules for functions declared
without a prototype, but that is not the same as functions which are
not declared at all.

> Can anyone point me to where C99 explicitly disallows a function
> without a declaration, and if so why doesn't gcc in C99 mode give an
> error rather than falling back to the C89 semantics?  Or are the
> numerous people suggesting C99 disallows undefined functions
> incorrect?

C99 disallows a function without a declaration in 6.5.2.2 paragraph 1:
"The expression that denotes the called function shall have type
pointer to function returning void or returning an object type other
than an array type."  This does not permit an undeclared symbol.

As you note, gcc in c99 mode will always give a warning for an
undeclared function; this is not true in c89 mode.  In c99 mode, the
compiler will give an error if you use the -pedantic-errors option.
Or the -Werror-implicit-function-declaration option.  Or the -Werror
option.

Ian

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux