6

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

编辑:我已将 "" 更改为 <> 但它没有帮助。此外,我仅使用此代码作为示例……这不是整个项目。

4

6 回答 6

17

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

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

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

有关更多信息,请参阅此帖子

于 2013-05-31T13:53:14.150 回答
12

首先:

#include <iostream>

代替#include "iostream"

其次,写作通常被认为是不好的做法using namespace std;,即使大多数课程都是从写作开始的。在您的情况下,最好只使用您实际需要的东西:

using std::cout;

于 2013-05-31T13:42:33.603 回答
4
 #include "iostream"

应该

 #include <iostream>

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

感谢@Jerry Coffin 的回答:

当您使用 < > 时,编译器仅在系统指定的目录/目录(例如,您在包含环境变量中设置的任何目录)中查找标头。

当你使用 " " 时,编译器首先在本地目录中查找,如果失败,就像你使用 < > 一样重新搜索。从技术上讲,(即,根据标准)不一定是“本地”目录,但这就是它在我所知道的每个编译器中的工作方式)。

编辑:

但是,根本原因是stdafx.h预编译的头文件。Visual C++ 不会编译#include "stdafx.h"源文件中的任何内容,除非/Yu'stdafx.h'未选中 compile 选项(默认情况下);它假定源代码中直到并包括该行的所有代码都已编译。但是,最好不要<>混淆iostream代码的读者。

于 2013-05-31T13:42:38.333 回答
1

如果你使用#include <iostream><> 而不是 "" 那么它应该可以工作。现在,编译器不知道在哪里可以找到 iostream 库。

此外,您可能希望更改cout<<"example";cout<<"example"<<endl;换行以使其格式正确。

于 2013-05-31T13:44:26.600 回答
0

尝试构建动态链接库时遇到此问题。确保您在 .cpp 文件的第一行#include stdafx.h指定以下包含而不是:

#include "pch.h"

VS2017 或更早版本也应该如此。

于 2021-08-22T19:37:06.173 回答
-2

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

有关 stdafx.h 的更多信息,请参阅Visual Studio 中“stdafx.h”的用途是什么?

于 2017-09-10T16:54:00.007 回答