我这里有一个简单的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。
答案 0 :(得分:2)
它说,在托管环境中,main
应该有一个类型。引自C ++标准3.6.1,第2段
实现不应预定义
main
函数。这个功能 不得超载。它的返回类型应为int
,但是 否则其类型是实现定义的。所有实施 应允许两者 - ()的函数返回int
和 - 的函数 (int,指向char的指针)返回int
作为main
的类型 (8.3.5)。