定義
void main(){/*-----*/}
不是,也從來不是C+,甚至不是C。見ISO C+標准3.6.1[2]或ISO C標准5.1.2.2.1。符合的實現接受
int main(){/*------*/}
和
int main(int argc,char* argv[]){/*------*/}
符合規范的實現可能提供更多的main()版本,但它們都必須具有返回類型int。main()返回的int是程序將值返回給調用它的“系統”的一種方法。在不提供這類工具的系統上,返回值將被忽略,但這不會使“voidmain()”合法C+或Legal C。即使您的編譯器接受“voidmain()”,也要避免它,否則C和C+程序員可能會認為它是無知的。
在C+中,main()不需要包含顯式返回語句。在這種情況下,返回的值為0,意味着成功執行。例如:
#include<iostream> int main() { std::cout<<"hello world"; }
還請注意,ISO C+和C99都不允許您將該類型排除在聲明之外。也就是說,與C89和ARM C+不同,在聲明中缺少類型時,不假定“int”。因此:
#include <iostream> main() { /* ... */ }
是一個錯誤,因為main()的返回類型丟失了。
資料來源:http://www.stroustrup.com/bs_faq2.html#void-main
綜上所述,使用“voidmain()”或僅僅使用“main()”從來都不是一個好主意,因為它不確定標准。不過,一些編譯器可能允許這樣做。