-7

ここに簡単な 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」に追加すると、正しくコンパイルおよび実行されます。このエラーが何を伝えようとしているのかを理解しようとしています。

デフォルトの g++ コンパイラを使用して、Netbeans 7.1.2 でコンパイルする Windows XP を使用しています。

4

1 に答える 1

2

それは、ホストされた環境でmainはタイプを持つべきだと言っています。C++ 標準 3.6.1、パラグラフ 2 からの引用

実装は、main関数を事前定義してはなりません。この関数はオーバーロードされません。type の戻り値の型を持つ必要がありintますが、それ以外の場合、その型は実装定義です。すべての実装では、() を返す関数と、 (8.3.5)の型としてint(int、char へのポインタへのポインタ) を返す関数の両方を許可する必要があります。intmain

于 2013-09-24T17:56:58.443 に答える