program contains at least the function
, which is the first function executed
when the program starts. All other functions are subroutines.
The definition of a function lists the statements it executes. Before a function can be called in a given translation unit, it must be declared. A function definition also serves as a declaration of the function. The declaration of a function informs the compiler of its return type. For example:
extern double pow();
pow() is declared as a function that returns
a value with type
double. Because function names
are external names by default, the storage class specifier
extern can also be omitted.
In ANSI C99, implicit function declarations are no longer permitted.
Formerly, calls to undeclared functions were allowed, and the
compiler implicitly assumed in such cases that the function returned
a value of type
The declaration of the function
pow() in the
example above contains no information about the number and type of
the function's parameters. Hence the compiler has no
way of testing whether the arguments supplied in a given function
call are compatible with the function's parameters.
This missing information is supplied by a function prototype.
A function prototype is a declaration that indicates the types of the function's parameters as well as its return value. For example:
double pow( double, double ); // prototype of pow()
This prototype informs the compiler that the function
pow() expects ...