簡體   English   中英

為什么主函數會出現“控制到達非空函數結束”的警告?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM