Pra*_*rav 11
因为返回类型main()
(由标准规定)必须int
C++ 03 [ Section 3.6.1
主要功能]
实现不应预定义主函数.此功能不应过载. 它应该具有int类型的返回类型,否则其类型是实现定义的.
来自Stroustrup的回答:
我可以写"void main()"吗?定义
void main() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
是不是也从来都不是C++,甚至也不是C.参见ISO C++标准3.6.1 [2]或ISO C标准5.1.2.2.1.符合要求的实施接受
int main() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
和
int main(int argc, char* argv[]) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
一致的实现可能提供更多版本的main(),但它们都必须具有返回类型int.main()返回的int是程序将值返回给调用它的"系统"的一种方式.在系统中不提供这样的设施的返回值被忽略,但是,这并不使"无效的主要()"法律C++或法律C.即使你的编译器接受"无效的主要()"避免它,或者风险被C和C++程序员认为是无知的.
在C++中,main()不需要包含显式的return语句.在这种情况下,返回的值为0,表示执行成功.例如:
#include<iostream>
int main()
{
std::cout << "This program returns the integer value 0\n";
}
Run Code Online (Sandbox Code Playgroud)
另请注意,ISO C++和C99都不允许您将类型保留在声明之外.也就是说,与C89和ARM C++相反,假设声明中缺少某个类型,则不假定为"int".所以:
#include<iostream>
main() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
是一个错误,因为缺少main()的返回类型.
资料来源:http://www2.research.att.com/~bs/bs_faq2.html#void-main