C ++ cout提供未声明的标识符

时间:2013-05-31 13:41:31

标签: c++ cout

所以,我有这个问题。为什么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。

编辑: 我已将“”更改为&lt;&gt;但它没有帮助。此外,我仅使用此代码作为示例...这不是整个项目。

5 个答案:

答案 0 :(得分:16)

stdafx.h应该是源文件中的第一个include指令。

切换文件并将第二个包含转换为<>,与其他建议一样。

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

有关详细信息,请参阅this post

答案 1 :(得分:11)

首先:

#include <iostream>

而不是#include "iostream"

其次,写using namespace std;通常被认为是不好的做法,尽管大多数课程都是从那开始的。在你的情况下,最好只使用你真正需要的东西:

using std::cout;

答案 2 :(得分:4)

 #include "iostream"

应该是

 #include <iostream>

从这篇文章引用:difference-between-iostream-and-iostream-quotes-in-include

由@Jerry Coffin的答案提供:

  

当你使用&lt; &gt;,编译器只查找系统指定的目录/目录(例如,你在include环境变量中设置的任何内容)。

     

当您使用“”时,编译器首先查找本地目录,如果失败,则重新搜索就像您使用的那样&lt;取代。从技术上讲,(即根据标准)不一定是“本地”目录,但它本身就是我所知道的每个编译器的工作方式。

修改

但是,根本原因是stdafx.h是预编译的标头。 Visual C ++不会在源文件中的#include "stdafx.h"之前编译任何内容,除非取消选中编译选项/Yu'stdafx.h'(默认情况下);它假设源中包含该行的所有代码都已编译。但是,最好将<>iostream一起使用,以免混淆代码的读者。

答案 3 :(得分:1)

如果您将#include <iostream>与&lt;&gt;一起使用而不是“”然后它应该工作。现在,编译器不知道在哪里可以找到iostream库。

此外,您可能希望将新cout<<"example";更改为cout<<"example"<<endl;,以便正确格式化。

答案 4 :(得分:-2)

Visual Studio 2017 IDE中也发生此错误。将stdafx.h移到顶部解决了错误。

有关stdafx.h的更多信息,请参阅What's the use for "stdafx.h" in Visual Studio?