2016-05-19 25 views
1

我只想問about this tutorial.C++教程看起來不對

我不明白。他們編寫的代碼是這樣的:

intmain() { 
    cout << "Hello World!\n"; 
    return0; 
} 

現在,我真的很新的C++,但肯定應該是:

int main() { 
    std::cout << "Hello World!\n"; 
    return 0; 
} 

還是有寫作C++一些奇特的方式,我不明白?本教程中編寫的代碼不會爲我編譯。

+0

@LightnessRacesinOrbit謝謝。但我對嗎?或者我錯過了什麼? – Chud37

+3

你問過tuturial的作者嗎?恕我直言,最好是在公開發布錯誤之前聯繫他們, – user463035818

+2

,並且不要信任任何教程。他們中只有很多人是不可能的,他們都不錯。 – user463035818

回答

12

你是對的;那個「教程」是chock full的格式錯誤。

很多很多C++教程都是錯誤的。不要相信互聯網上的一些隨從者的話;使用a proper, peer-reviewed book

3

在複製粘貼代碼時,它們明顯存在空格和引號的問題。

因此,他們的代碼不是複製粘貼準備好的。

我相信它應該是:

#include <iostream> 
using std::cout; 
int main() 
{ 
    cout << "Hello world!\n"; 
    return 0; 
} 
+0

是的,它真的很奇怪,因爲他們在人們的底部評論說:「謝謝!太棒了!」那類的東西。我不明白。 – Chud37

+0

也許在文章發佈後,不知道「C++」的人可能會更改格式。雖然這並不能解釋缺少的std :: – drescherjm

1

嗯,很明顯,你需要有回報0之間的空間;和int main()。

現在,讓我們繼續爲你解釋std ::。 std是一個'命名空間'。基本上,它用於將類似的代碼組合在一起,以避免名稱衝突。標準(std)名稱空間包括基本的C++特性。在新的(ish)版本的C++中,您需要指定您從中取得函數的名稱空間。

你可以做「using namespace std;」在開頭,或單獨指定命名空間,如在您更正的代碼中,爲您使用的每個標準函數。

+2

你應該永遠不要使用'namespace std;''[*** Link ***](http://stackoverflow.com/questions/1452721/why-is-using-namespace -std-in-c-considered-bad-practice) – abelenky

+0

@abelenky確實如此,但對於簡單的代碼片段並不重要。 – Meraj99

+3

它代表了一些簡單的代碼** **。它爲你的代碼引入了大量的'std ::'命名空間來使用1或2個項目。當另一個開發人員讀取代碼時,它會告訴他們*無*新。 (所有的代碼使用'std ::',但它仍然不告訴他們使用哪些部分) – abelenky

2

或者是否有一些奇特的編寫C++的方式,我不明白?

嗯,有可能仍然是令人討厭的事情推測喜歡使用C-預處理宏:

#define intmain int main 
#define return0 return 0 

但是我有@Lightness同意,只是不放心隨機學習來源。

對於我幾乎每天使用的C++來說,獲得可靠參考的好方法是cppreference.com


1)我會上報看到這樣給我的老闆公然無能,並建議大火,寫這樣的代碼的作者。

+1

這是一個參考網站;適合查找,但不適合學習。 –