2013-05-31 65 views
5

所以,我有這個問題。爲什麼cout拋出C++ cout給出了未聲明的標識符

error C2065: 'cout' : undeclared identifier 

我正在使用Visual Studio 2012作爲IDE,我在寫一個學校項目。除了示例文件外,我已完成了一切。因此,我試圖寫在屏幕上是這樣的:

#include "iostream" 
#include "stdafx.h" 
using namespace std; 

int main() 
{ 
    cout<<"example"; 

    return 0; 
} 

所以,問題是COUT ... printf的工作正常,但我想用COUT。

編輯: 我已將「」更改爲<>但它沒有幫助。另外,我僅使用此代碼,例如...這不是整個項目。

+0

嘗試'#包括' –

+0

而使用'的std :: cout'或使用的命名空間。 – Dirk

+4

我相信預編譯頭文件必須是源代碼中的第一行。 – chris

回答

12

stdafx.h應該是源文件中的第一個包含指令。

切換文件並將第二個轉換爲<>,如其他建議。

#include "stdafx.h" 
#include <iostream> 

查看this post瞭解更多信息。

+1

thx,我只是自己發現,但你是唯一一個與實際修復:D:D – Dekay

+0

@ user2440586,公平地說,它*是*更好地使用尖括號時,包括標準頭。 – chris

11

首先:

#include <iostream> 

,而不是#include "iostream"

其次,它通常被認爲是不好的做法,寫using namespace std;,儘管大部分課程開始這一點。這是更好地只使用你真正需要的,你的情況:

using std::cout;

+2

不需要「其次」。他已經使用「using namespace std;」 – Tik0

+2

哎呀,我的壞...刪除那 –

+0

問題是爲什麼當它失敗時,「」像搜索<>時失敗。 – chris

4
#include "iostream" 

應該

#include <iostream> 

從這篇文章引用:difference-between-iostream-and-iostream-quotes-in-include

通過的禮貌@ Jerry Coffin的回答:

當您使用<>時,編譯器僅查找標頭中系統指定的目錄/目錄(例如,在include環境變量中設置的任何內容)。

當您使用「」時,編譯器首先查找本地目錄,如果失敗,則重新搜索就像您使用<>。從技術上講,(即根據標準)不必是「本地」目錄,但這就是它在我知道的基本上每個編譯器中的工作方式)。

編輯:

然而,根本原因是stdafx.h是預編譯的頭。除非編譯選項/Yu'stdafx.h'未被選中(默認情況下),否則Visual C++不會編譯源文件中#include "stdafx.h"之前的任何內容;它假定源代碼中的所有代碼都已經編譯完成幷包含該行。但是,使用<>iostream不要混淆讀取代碼更好。

+1

我看到的問題是你與報價的答案矛盾。我的錢在PCH問題上。 – chris

+0

@chris我想最後一句話'但是這就是它在我所知道的每個編譯器中都是如何工作的,這些編譯器引用了他的答案。如果包括引用不正確,請隨時糾正我,謝謝! – taocp

+0

我相信他在引用'#include「name」'在搜索到#include 之前以實現定義的方式搜索這一事實,但是每個理智的編譯器都在本地目錄中查找。 – chris

1

如果您使用#include <iostream>與<>而不是「」,那麼它應該工作。現在,編譯器不知道在哪裏找到iostream庫。

此外,您可能需要將cout<<"example";更改爲cout<<"example"<<endl;以便換行,以便格式正確。

+2

如果您只是建議添加一個新行,那麼建議添加一個新行:'<<'\ n';'。如果你還建議沖洗,你應該清楚地指出。 – BoBTFish