Сообщение об ошибке здесь немного неоднозначно.Тип возвращаемого значения функции ac по умолчанию int
.Компилятор сообщает, что не может выполнить преобразование из int
в test
.Но на самом деле, это не удалось, потому что он не знал, что такое getNumber()
.Сообщение об ошибке компилятора должно быть немного яснее, говоря о неопределенном вызове getNumber()
или о чем-то в этих строках.
Компилятор C работает по принципу сверху вниз.Что бы ни использовали переменные, вызовы функций должны быть известны ей заранее.Поэтому, когда компилятор видит следующее утверждение -
test testing = getNumber();
, до этого момента он не знает, что такое getNumber()
.Итак, у вас есть две опции, которые делают компилятор счастливым.
- Либо вперёд объявите объявление функции.
- Или переместите определение функции выше
main()
.