这种定义:
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 值,是程序返回一个值给调用它的系统的方式。在那些不具备这种方式的系统中,
返回值被忽略了,但这并不使“void main()”在C++或C 中成为合法的。即使你的编译
器接受了“void main()”,也要避免使用它,否则你将冒着被C 和C++程序员视为无知
的风险。
在 C++中,main()并不需要包含显式的return语句。在这种情况下,返回值是0,表示
执行成功。例如:
#include<iostream>
int main()
{
std::cout << "This program returns the integer value 0\n";
}
注意,无论是ISO C++还是C99,都不允许在声明中漏掉类型。那就是说,与 C89和 ARM
C++形成对照,当声明中缺少类型时,并不会保证是“int”。于是:
#include<iostream>
main() { /* ... */ }
是错误的,因为缺少 main()的返回类型。