2012-10-18 80 views
-9

可能重複:
What should main() return in C/C++?main()返回什麼?

什麼價值這個函數返回。只是簡單的主要。

main() 
{ 
... 
} 

如果一個函數有兩個市電,會發生什麼?

+5

_「如果一個函數有*兩個主電源」_? –

+0

很明顯,第一個'主'被優先考慮,除非你在第二'主'上設置'FirstMain'屬性,那麼順序無關緊要 – MStodd

+0

我會用_why_?來解決你的問題。當它不能編譯時,爲什麼要放兩個電源?爲什麼不按照標準,只有一個主返回一個int? – Mike

回答

4

此函數返回什麼值。

main需要聲明爲返回int。返回值傳遞給調用者,通常是操作系統。

5.1.2.2.1 Program startup

稱爲在程序啓動的功能被命名爲主力。該實現聲明不具有此功能的原型 。它應爲int的返回類型和不帶 參數來定義:

int main(void) { /* ... */ } 

或兩個參數(這裏稱爲argc和argv,雖然任何人的名字,可以 使用,因爲它們是本地在聲明它們的功能):

int main(int argc, char *argv[]) { /* ... */ } 

如果一個函數有兩個電源,會發生什麼?

鏈接器報告錯誤。

1

如果在託管環境中達到},則在C99/C11中,main返回0。否則,返回值是不確定的。

C11,§5.1.2.2.2程序執行

[...]到達該終止main功能}返回0

0

的值假設你」重新使用C89或更早的編譯器,然後

main() 
{ 
    ... 
} 

返回int。如果您使用的是C99或更高版本的編譯器,那是錯誤的。

從C99開始,如果沒有顯式返回而到達main的結尾},則返回值爲0.不確定C89或更早版本。

不知道「一個功能有兩個主電源」應該是什麼意思。如果程序定義了兩個main函數,那麼在鏈接時您很可能會得到重複的定義錯誤。