Объявляйте функции перед вызовом их. В вашем случае вы пытаетесь позвонить navigation
, прежде чем объявить его. Это допустимо в C89 / 90, но обычно приводит к предупреждению компилятора. C99 спецификация языка C требует декларации, что означает, что ваше предупреждение превратится в ошибку в C99. Итак, если вы просто делаете
int navigation(); /* declaration */
перед попыткой вызова navigation
предупреждение исчезнет.
Более того, неплохо бы не просто объявлять функции перед их вызовом, но фактически объявлять их с прототипом . С99 этого не требует, но, тем не менее, это очень хорошая практика. То есть navigation
лучше объявить как
int navigation(int, char *); /* prototype */
или
int navigation(int p, char *menu); /* prototype */
в зависимости от ваших вкусов.
Обратите внимание, что текст предупреждения вашего компилятора вводит в заблуждение. Кажется, предполагается, что определение функций требуется перед вызовом. В действительности, вполне достаточно неопределяющего объявления .