很多人甚至市面上的一些書籍,都使用了void main( ),其實這是錯誤的。C/C++中從來沒有定義過void main( )。C++之父Bjarne Stroustrup在他的主頁上的FAQ中明確地寫着The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( )從來就不存在於C++或者C)。
main函數,又稱主函數,作為絕大大部分C程序唯一的入口,一般是要求有返回值的,0代表程序正常執行成功,返回非0值代表程序異常結束,因此返回值需要是int整型,這樣返回值才能傳遞給程序的調用者(如操作系統)。於是有了int main( )的規范,如果沒加return 0; C99編譯器會自動給你在代碼后添加(自己寫上是個好習慣)。如果使用```void main( )```,在代碼最后也聲明返回值return 0; 的話,程序隨能編譯運行成功,卻不利於操作系統判斷其狀態,這對於由很多C程序構成的大型項目來說是可能各種毛病。
總之,main函數的返回值應該定義為int類型,C和C++標准中都是這樣規定的。雖然在一些編譯器中,void main()可以通過編譯(如vc6),但並非所有編譯器都支持void main(),因為標准中從來沒有定義過void main()。g++3.2中如果main函數的返回值不是int類型,就根本通不過編譯。而gcc3.2則會發出警告。所以,如果你想你的程序擁有很好的可移植性,請一定要用int main。