C generally requires you to define functions before you
refer to them in other functions.
You can, however, provide a function prototype, instead of a
full definition. Once you have provided a function
prototype, you can refer to the function.
If you want to define cooperative, indirectly recursive functions,
then you must provide at least one function prototype.
If you need a function prototype,
then instantiate the following pattern:
return data typefunction name (data type of parameter 1,
...
data type of parameter n)