2013-03-16 115 views
1

我是新的C++和我在「Hello World」程序,我不斷收到錯誤COUT沒有指定類型

「COUT」不點名,我使用geany類型Ubuntu的,如果有差別,這裏是我的代碼:

#include <iostream> 

int main() 
{ 
extern cout << "hello world!"; 
    return 0; 
} 

我不想做一個新的問題,所以我要在這裏添加它

隨着修訂供貨現在它將編譯,但是當我運行程序,我得到錯誤

./geany_run_script.sh: 5: ./geany_run_script.sh: ./hello: not found 

對此有何看法?

+0

你可能需要'std :: cout',或'#include'後面的'using namespace std;'。 – 2013-03-16 23:53:00

+0

我認爲你需要在main()或'std :: cout'之前指定命名空間'std':'使用命名空間標準'' – A4L 2013-03-16 23:53:12

+2

請不要使用(或建議)'使用命名空間標準;'我們都知道這個爛攤子它最終造成。 :(只需在需要的地方使用'std ::'前綴 – syam 2013-03-16 23:58:52

回答

1

變化:

extern cout << "hello world!"; 

std::cout << "hello world!"; // You probably want \n on the end. 

這是因爲cout是在命名空間std定義的對象。因此,您需要讓編譯器通過在std::前加上前綴來知道在哪裏找到它。有幾種替代技術,但在我看來這是最好的。

備選之一:使用using directive

using std::cout; 
cout << "hello world!"; 

using std::cout;告訴編譯器存在std的對象稱爲cout,我們想在本地使用,它被帶入當前上下文從而允許您使用它直接。

+0

我刪除了\ n,看看是否會有所幫助,你能解釋一下std ::的東西嗎? – 2013-03-16 23:54:08

+0

謝謝你的解釋 – 2013-03-17 00:04:15

3

更改externstd::。第一個問題是extern只在類型名稱前有效,所以這就是編譯器所抱怨的。第二個是cout在命名空間std中定義,所以你需要告訴編譯器看看那裏。好的是代碼不會說using namespace std;

+0

我加了extern,試圖看看是否能解決它 – 2013-03-16 23:56:03