用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()”从来都不是一个好主意,因为它不确定标准。不过,一些编译器可能允许这样做。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: