2016-12-05 75 views
-2

我目前使用Putty虛擬機(UNIX)作爲我的類,我們正在做一個簡短的C++作業。該任務是: 「創建一個C++程序,測試,看看文件賬戶存在並顯示一條消息說該文件是否存在」錯誤:':: 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

main返回類型是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;''_ ...但是你的編譯器應該警告你關於它,並且警告可能被視爲錯誤。養成總是將'return 0;'明確地放在'main'結尾處的習慣。或者確實返回你選擇的值(但'0'是一個表示成功的約定)。 – paddy

相關問題