關於main函數的返回值

return返回的數值由程序的作者自定。返回不同的值可以代表不同的含義,一般是代表出錯的原因,傳統上返回0代表程序正常結束

在 C89(C語言的早期標準)中, main() 是可以接受void返回值的。Brian W. Kernighan 和 Dennis M. Ritchie 的經典鉅著 The C programming Language(《C 程序設計語言》)用的就是void main( )。不過在最新的 C99 標準中,只有以下兩種定義方式是正確的:

int main(void)
int main(int argc, char *argv[])

main 函數的返回值類型必須是 int ,這樣返回值才能傳遞給操作系統。在大多數系統中,main函數的返回值是一個狀態指示器。返回值0往往表示main函數成功執行完畢。任何其他非零的返回值都有操作系統定義的含義。通常非零返回值表明有錯誤出現。每一種操作系統都有自己的方式告訴用戶main函數返回什麼內容。

如果 main 函數的最後沒有寫return 語句的話,C99 規定編譯器要自動在生成的目標文件中(如 exe 文件)加入 return 0 ,表示程序正常退出。注意,vc6 不會在生成的目標文件中加入return 0 .不過,gcc3.2(Linux 下的 C 編譯器)會在生成的目標文件中加入return 0 。
在C++98(C++語言的一個標準)中定義瞭如下兩種 main 函數的定義方式:

int main( )
int main( int argc, char *argv[] )

int main( ) 等同於 C99 中的 int main( void ) , int main( int argc, char *argv[] ) 的用法也和 C99 中定義的一樣。同樣,main 函數的返回值類型也必須是int 。如果main 函數的末尾沒寫return 語句,C++98 規定編譯器要自動在生成的目標文件中加入return 0 。同樣,vc6 也不支持這個特性,但是g++3.2(Linux 下的 C++ 編譯器)支持。

在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型爲“void foo(void);”。main 函數的返回值應該定義爲 int 類型,C 和 C++ 標準中都是這樣規定的。雖然在一些編譯器中,void main 可以通過編譯(如 vc6),但並非所有編譯器都支持void main ,因爲標準中從來沒有定義過 void main 。g++3.2 中如果main 函數的返回值不是int 類型,就根本通不過編譯。而gcc3.2 則會發出警告。所以,如果你想你的程序擁有很好的可移植性,請一定要用int main 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章