C/C++ 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 是程序向调用它的“系统”返回值的一种方式。在不提供这样的机制的系统中,返回值被忽略,但这不会使“void main()” 成为合法的 C++ 或 C 语法。即使你的编译器接受 "void main()“,我们也应该避免使用它,这会被 C 和 C++ 程序员所不认可的。
**在 C++ 中,main() 不需要包含一个明确的返回语句。在这种情况下,返回值为 0,意味着程序成功执行。**例如:
#include <iostream>
int main()
{
std::out << "This program returns the integer value 0\n";
}
注意,不管是 ISO C++ 还是 C99 都没有允许你不加返回类型,也就是说,与 C89 和 ARM C++ 相比,”int“ 不被认为是声明中的缺失类型,因此:
#include <iostream>
main() { /* ... */ }
是错误的,因为 main() 的返回类型缺失了。
该示例来自于: http://www.stroustrup.com/bs_faq2.html#void-main
根据上述内容总结如下:使用 “void main()” 或仅仅写个 “main” 都不是好的习惯,尽管在某些编译器下允许你这么写,但这不是是标准的语法。