错误:ISO C ++禁止声明没有类型的`__nomain'

时间:2013-09-24 17:55:06

标签: c++

我这里有一个简单的C ++程序:

#include <iostream>
using namespace std;
main ()              //no return type for main. Yet program compiles and runs ok
{                    //when run by itself.
  cout << "hi";
}

但如果我在另一个名为newsimpletest1.cpp的文件中添加空白单元测试,程序将不再编译:

#include <stdlib.h>
#include <iostream>

int main(int argc, char** argv) {

}

如果我运行它,它会按预期编译并打印“hi”。但如果我测试项目,我会收到一个错误:

error: ISO C++ forbids declaration of `__nomain' with no type

当我将返回类型'int'添加到'main'时,它会编译并正确运行。我想弄清楚这个错误试图告诉我的是什么。

我正在使用Windows XP使用默认的g ++编译器编译Netbeans 7.1.2。

1 个答案:

答案 0 :(得分:2)

它说,在托管环境中,main应该有一个类型。引自C ++标准3.6.1,第2段

  

实现不应预定义main函数。这个功能   不得超载。它的返回类型应为int,但是   否则其类型是实现定义的。所有实施   应允许两者 - ()的函数返回int和 - 的函数   (int,指向char的指针)返回int作为main的类型   (8.3.5)。