在C / C ++中编写“void main()”或“main()”可以吗?-IDC帮帮忙

定义

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()的返回类型。

 

总而言之,使用“void main()”或“main()”绝不是一个好主意,因为它不能确认标准。但是,某些编译器可能允许这样做。