- A function prototype is a function declaration that specifies the data types of its arguments in the parameter list.
- a function prototype or function interface is a declaration of a function that specifies the function's name and type signature (arity, parametertypes, and return type), but omits the function body.
- Prototypes are syntactically distinguished from the old style of function declaration.
- While a function definition specifies how the function does what it does (the "implementation"), a function prototype merely specifies its interface, i.e. what data types go in and come out of it.
- In a prototype, parameter names are optional (and in C/C++ have function prototype scope, meaning their scope ends at the end of the prototype), however, the type is necessary along with all modifiers.
- The two styles can be mixed for any single function, but this is not recommended. The following is a comparison of the old and the prototype styles of declaration:
- Functions can be declared implicitly by their appearance in a call.
- Arguments to functions undergo the default conversions before the call.
- The number and type of arguments are not checked.
- Functions are declared explicitly with a prototype before they are called.
- Multiple declarations must be compatible, parameter types must agree exactly.
- Arguments to functions are converted to the declared types of the parameters.
- Empty parameter lists are designated using the
- Ellipses are used in the parameter list of a prototype to indicate that a variable number of parameters are expected.