2012-03-11 15 views
1

私は完全にC++で新しく、Eclipseを使用しています。C++ |主な機能エラー|初心者

が、私は主な機能で、このエラーを取得する理由は...私は知りません。

ERROR: ::main must return int

私のコードは次のとおりです。

void main() 
{ 
char a; 
while (a!='q') 
{ 
    string ln = "enter option: "; 
    cout<< ln; 

    switch(a) 
    { 
    case 1: 
     if (a=='1') 
      func1(); 
     break; 
    case 2: 
     if (a=='2') 
      break; 
     break; 
    } 
} 
} 

答えて

5

C++、main機能を持っている必要があるので返品タイプはintです。

戻り値のタイプがvoidのバージョンが正しくないため、コンパイラによって正しく拒否されています。

ちょうどあなたがあなたのプログラムにコマンドラインに渡された引数を処理することを可能にする代替形式があり

int main() 

void main() 

からの宣言を変更します。それは次のようになります。

int main (int argc, char *argv[]) 

が、あなただけのC++を学習し、画面上の「Hello World」を印刷しようとしているとき、これはおそらく、あなたが心配する必要があるものではありません。あなたは最終的にそこに着くでしょう。

また、C++を学ぶために使用している本を更新することを検討してください。エントリポイントの関数シグネチャが間違っている場合は、他のより複雑なものが間違っている可能性がありますか?初めに間違った言語を覚えていても意味がありません。推奨書籍のリストはhereです。

+0

もう一度待ってください。メインは無効です。私はかなり私は 'の前にvoid main()を見たと確信している –

+0

の@ボグダン:それは正しいだろうC + +。他の言語では、C#のようにmain関数の型として 'void'を使うかもしれません。さらに、非常に古いコンパイラの中には 'void main'をサポートしていたものもありましたが、これは決して標準的ではありません。 –

+0

これは通常、悪いテキストブックでよく見られますが、コンパイラによってはそれも許可されることもありますが、それでも間違いです。 –

1

戻り値の型はint次のようになります。

int main (void)

int main (int argc, char *argv[])

2

あなたのvoid main()int main()にを変更する必要があります。

C++ではメイン関数を返すことができません。

2
char a; 
while (a!='q') 

未初期化変数を文字qと比較しています。初期化されていない変数からの読み取りは、未定義の動作を呼び出します。運がよければ、a!='q'は偽であるかもしれません。 char a;char a = 0;(またはq値以外の値)に変更するか、whileループをdo-whileループに置き換えます。