Declare functions before calling them. In your case you make an attempt to call navigation
before declaring it. It is legal in C89/90, but usually results in compiler warning. C99 specification of C language requires declaration, meaning that your warning will turn into an error in C99. So, if you just do
int navigation(); /* declaration */
before attempting to call navigation
, the warning will disappear.
Moreover, it is a good idea to not just declare functions before calling them, but actually declare them with a prototype. C99 does not require this, but it is nevertheless a very good practice. I.e. it is better to declare navigation
as
int navigation(int, char *); /* prototype */
or
int navigation(int p, char *menu); /* prototype */
depending on your tastes.
Note, that the text of your compiler warning is misleading. It seems to suggest that a definition of the functions is required before the call. In reality, a mere non-defining declaration is perfectly sufficient.