2014-01-22 28 views
13

中包含了iostream頭文件我試圖編譯下面的簡單程序。但是,這不是編譯&給出了錯誤:錯誤:'cout':未聲明的標識符;儘管我已經在程序

error C2065: 'cout' : undeclared identifier 

我要問你,爲什麼,雖然我已經包含在裏面iostream頭文件這個程序不能正常工作?

#include <iostream> 

void function(int) { cout << 「function(int) called」 << endl; } 
void function(unsigned int) { cout << 「function(unsigned int) called」 << endl; } 
    int main() 
    { 
     function(-2); 
     function(4); 
     return 0; 
    } 

在此先感謝。

+8

僅使用'std :: cout'而不是'cout'。在'namespace std'中使用的所有內容之前追加'std ::'。 – sgarizvi

+0

或者在這樣的情況下 - 當你編寫一個非常簡單的程序時,你總是可以在'#include '下面的某個地方寫'using namespace std;'。它會通知編譯器在std命名空間中查找'cout',從而允許你的'cout'工作。 雖然這被認爲是不好的做法。 –

+0

避免'使用命名空間標準;'。這是保證有一天你會咬你的。如果你不想輸入'std :: cout',可以使用'std :: cout',但將它限制在一個小範圍內,並且不要在頭文件中使用它。 – juanchopanza

回答

18

cout流在std命名空間中定義。因此將其命名爲你寫的:

std::cout 

如果你想縮短這個來清點,那麼你可以寫COUT之前寫

using namespace std; 

using std::cout; 

任何好的文檔資源都會告訴你哪個命名空間包含一個對象。例如:http://en.cppreference.com/w/cpp/io/cout

+0

方面評論:不要使用'使用名稱空間std'。如果你在標題中使用這個暴行,那麼這個頭的用戶就會爲你的頭而來。如果你在一個源文件中使用它,結果會不那麼嚴重。該文件的審稿人將視作者爲無望的新作品。即使'使用std :: cout'也是可疑的。例如,我喜歡看到'std ::​​'。它告訴我'​​'來自標準庫。 –

+0

我該如何解決C代碼中的這個錯誤? –

+0

@Mona std :: cout是C++標準庫的一部分,因此無法在C代碼中使用 –

2

你必須寫std::cout或添加using std;