1. 程式人生 > >C 和 C++ 中的mian函式解析

C 和 C++ 中的mian函式解析

main函式的返回值:

    return返回的數值由程式的作者自定。返回不同的值可以代表不同的含義,一般是代表出錯的原因,傳統上返回0代表程式正常結束。
    main函式的返回值用於說明程式的退出狀態。如果返回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[])

    如果你不需要從命令列中獲取引數,請用int main( void );否則請用int main(int argc, char *argv[])
    main函式的返回值型別必須是int,這樣返回值才能傳遞給作業系統。
    如果main函式的最後沒有寫return語句的話,C99規定編譯器要自動在生成的目標檔案中(如exe檔案)加入return 0,表示程式正常退出。注意,vc6不會在生成的目標檔案中加入return 0。不過,gcc3.2Linux下的 C 編譯器)會在生成的目標檔案中加入return 0


    C++98C++語言的一個標準)中定義瞭如下兩種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.2Linux下的C++編譯器)支援。
    在C

C++中,不接收任何引數也不返回任何資訊的函式原型為void foo(void);main函式的返回值應該定義為int型別,CC++標準中都是這樣規定的。雖然在一些編譯器中,void main可以通過編譯(如vc6),但並非所有編譯器都支援void main,因為標準中從來沒有定義過void maing++3.2中如果main函式的返回值不是int型別,就根本通不過編譯。而gcc3.2則會發出警告。所以,如果你想你的程式擁有很好的可移植性,請一定要用int main
    main函式的返回值用於說明程式的退出狀態。如果返回0,則代表程式正常退出,否則代表程式異常退出。
    任何一個C++程式都必須定義一個main函式,它的返回型別總是int型別。這個函式由作業系統來呼叫,在main函式執行完以後,程式也就終止了。main也可以使用return向作業系統返回一個值,使用作業系統的命令可以檢測main的返回值。一般約定在main返回0時,表示程式執行過程中沒有出現錯誤,其它非零值表示程式出現異常情況。
    在大多數系統中,main函式的返回值是一個狀態指示器。返回值0往往表示main函式成功執行完畢。任何其他非零的返回值都有作業系統定義的含義。通常非零返回值表明有錯誤出現。每一種作業系統都有自己的方式告訴使用者main函式返回什麼內容。