Почему предупреждение о том, что "управление достигает конца не-void функции" для основной функции?
Я запускаю следующие коды C и получил предупреждение: управление достигает конца не-void функции
int main(void) {}
Любые предложения?
Ответы
Ответ 1
Просто поместите return 0
в свой main()
. Ваша функция main возвращает int (int main(void)
), поэтому вы должны добавить возврат в конце.
Контроль достигает конца не-void функции
Problem: I received the following warning:
предупреждение: управление достигает конца не-void функции
Решение. Это предупреждение похоже на предупреждение, описанное в Return, без значения. Если управление достигает конца функции и не встречается возврат, GCC принимает возврат без возвращаемого значения. Однако для этого функция требует возвращаемого значения. В конце функции добавьте оператор return, который возвращает подходящее возвращаемое значение, даже если элемент управления никогда не доходит до него.
источник
Решение
int main(void)
{
my_strcpy(strB, strA);
puts(strB);
return 0;
}
Ответ 2
В качестве альтернативы очевидному решению добавить оператор return
в main()
, вы можете использовать компилятор C99 ( "gcc -std = c99", если вы используете GCC).
В C99 для main()
не имеет права иметь оператор return
, а затем окончательный }
неявно возвращает 0.
$ gcc -c -Wall t.c
t.c: In function ‘main’:
t.c:20: warning: control reaches end of non-void function
$ gcc -c -Wall -std=c99 t.c
$
Заметка, что пуристы считали бы важным: вы должны не исправить предупреждение, объявив main()
как возвращающий тип void
.
Ответ 3
Основная функция имеет возвращаемый тип int, как указано в
int main(void)
однако ваша основная функция ничего не возвращает, она закрывается после
puts(strB);
Добавить
return 0;
после этого и он будет работать.