2012-03-11 102 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的版本不正確,並且正在被編譯器正確拒絕。

剛剛從

void main() 

改變聲明

int main() 

還有另外一種形式,您可以處理命令行程序傳遞參數。它看起來像這樣:

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

但是當你剛開始學習C++,並試圖打印的「Hello World」在屏幕上,這可能不是你需要擔心的東西。你最終會到達那裏。

並考慮更新您用來學習C++的書。如果入口點的函數簽名錯誤,那麼其他更復雜的事情也可能會出錯?!第一次學習語言錯誤沒有意義。建議的書籍列表可用here

+0

等一下,你min主要是一個無效類型的函數?我很確定我已經看到void main()之前 – 2012-03-11 11:47:10

+0

@Bogdan:這不會是正確的C++。其他語言可能會使用'void'作爲主函數的類型,如C#。此外,一些非常古老的編譯器支持'void main',但它從來沒有標準或正確。 – 2012-03-11 11:49:30

+0

你會經常看到它,通常在糟糕的教科書中,一些編譯器甚至會允許它,但它仍然是錯誤的。 – 2012-03-11 11:50:31

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值),或將do循環替換爲do-while循環。