2016-12-05 31 views
-2

私は現在、自分のクラスにPutty仮想マシン(UNIX)を使用しています。 "ファイルアカウントが存在するかどうかをテストし、ファイルが存在するかどうかを確認するC++プログラムを作成してファイルが存在するかどうかを示すメッセージを出力します"エラー: ':: main'は 'int'を返す必要があります

これは私のものですが、コードをコンパイルしようとすると、私はこのエラーを取得する: エラー:mainの '::メイン' 返さなければなりません "int型

#include<iostream> 
#include<fstream> 

using namespace std; 
inline bool exists_test1 (const std::string& name) { 

if (FILE *file = fopen(name.c_str(), "r")) { 
fclose(file); 
return true; 
} else { 
return false; 
} 
} 

void main() 
{ 
string s; 
cout<<"Enter filename"; 
cin>>s; 
bool ans =exists_test1(s); 
if(ans) 
{ 
cout<<"File Exist"<<endl; 
} 
else 
{ 
cout<<"File Does not Exist"; 
} 
} 
+4

あなたの質問はありますか?そのエラーメッセージは完全に私には分かりません。 –

+0

PuTTYは仮想マシンではなく端末エミュレータです。あなたはプログラム全体を私たちに示していません。コンパイラが 'main'に到達する前に構文エラーが発生するので、あなたが私たちに示したものはエラーメッセージを生成しません。コードは適切にインデントされている必要があります。 –

答えて

4

戻り値の型はintです。これはC++標準で定義されています。 C++ 11ドラフトの私のローカルコピーでは、それは§3.6.1主な機能に概説されています:

  1. An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:

    int main() { /* ... */ } 
    

    and

    int main(int argc, char* argv[]) { /* ... */ } 
    

したがって、あなたのプログラムは標準に従って病気に形成され、あなたはコンパイラが正しくエラーとしてそれを報告しています。代わりにあなたの関数を定義してください:

int main() 
{ 
    // your code... 

    return 0; 
} 
+0

同じセク​​ションの項目5を追加します_ "コントロールがreturnステートメントに遭遇することなくメインの最後に到達すると、効果は' return 0; '" _ _を実行することです。警告がエラーとして処理される可能性があります。 'main'の最後に明示的に' return 0; 'を置く習慣を覚えてください。実際には、あなたの選択した値を返します(ただし、「0」は成功を示す規則です)。 – paddy

関連する問題