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

猜你喜欢

转载自blog.csdn.net/akyj1021/article/details/81610722
c+
今日推荐