Answer:
The function prototype serves to ensure that calls to the function are made with the proper number and types of arguments. In the case of function overloading, the different prototypes serve to distinguish which version of the function to call.
The compiler will complain with an error, if no function prototype is found for any particular call to a function.