用C/C+編寫“voidmain()”或“main()”可以嗎?

定義

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()”從來都不是一個好主意,因爲它不確定標準。不過,一些編譯器可能允許這樣做。

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