Как сказал Гиллс, чтобы исправить ошибку, переместите определения функций выше main()
или поместите туда прототипы функций.
Причина ошибки в том, что когда компилятор видит:
foo1(p);
foo2();
прежде чем он увидит объявление или определение foo1()
и foo2()
, он предполагает, что тип возвращаемых данных функций - int
. В первые дни C int
считался приемлемым типом возврата по умолчанию (в ранних версиях C не было типа void
). В настоящее время пропуск типа возврата считается плохой практикой, и компиляторы жалуются на это.