C++cout给出了未声明的标识符

C++ cout gives undeclared identifier

本文关键字:标识符 未声明 C++cout      更新时间:2023-10-16

所以,我有这个问题。为什么cout抛出

error C2065: 'cout' : undeclared identifier

我正在使用Visual Studio 2012作为IDE,并且正在编写一个学校项目。除了一个示例文件,我什么都做了。所以我试着在屏幕上写这样的东西:

#include "iostream"
#include "stdafx.h"
using namespace std;
int main()
{
    cout<<"example";
    return 0;
}

所以问题出在定制。。。printf效果不错,但我想用cout。

编辑:我已将"更改为<>但这于事无补。此外,我只使用这个代码作为示例。。。这不是整个项目。

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

按照其他人的建议,切换文件并将第二个include转换为<>

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

请参阅这篇文章了解更多信息。

首先:

#include <iostream>

而不是#include "iostream"

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

using std::cout;

 #include "iostream"

应该是

 #include <iostream>

本文引用:包含中iostream和iostream引用之间的差异

由@Jerry Coffin提供答案:

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

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

编辑:

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

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

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

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

#include "pch.h"

VS2017或更早版本也应如此。

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

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