[英]Why a warning of “control reaches end of non-void function” for the main function?
我運行以下 C 代碼並收到警告:控制到達非空函數的結尾
int main(void) {}
有什么建議么?
只需將return 0
放在您的main()
。 您的函數 main 返回一個 int ( int main(void)
),因此您應該在它的末尾添加一個 return 。
控制到達非空函數的末尾
Problem: I received the following warning:
警告:控制到達非空函數的結尾
解決方案:此警告類似於無值返回中描述的警告。 如果控制到達函數的末尾並且沒有遇到返回,GCC 假定返回沒有返回值。 但是,為此,該函數需要一個返回值。 在函數的末尾,添加返回合適的返回值的 return 語句,即使控制從未到達那里。
解決方案:
int main(void)
{
my_strcpy(strB, strA);
puts(strB);
return 0;
}
作為向main()
添加return
語句的明顯解決方案的替代方案,您可以使用 C99 編譯器(如果您使用 GCC,則為“gcc -std=c99”)。
在 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
。
main 函數的返回類型為 int,如
int main(void)
但是你的主函數沒有返回任何東西,它在之后關閉
puts(strB);
添加
return 0;
在那之后,它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.