c++ - 错误 C2065 : 'errno' : undeclared identifier in <string> in Visual Studio 2012

标签 c++ c string visual-studio-2010 visual-studio-2012

我有一个项目在 Visual Studio 2010 中运行。现在我正在使用 Visual Studio 2012。 现在我在构建项目时遇到错误。 我也查看了 GoogleSO。但是我没有找到任何解决方案。

    c:\program files\microsoft visual studio 11.0\vc\include\string(557): error C2065: 'errno' : undeclared identifier
2>c:\program files\microsoft visual studio 11.0\vc\include\string(557): error C2065: 'errno' : undeclared identifier
2>c:\program files\microsoft visual studio 11.0\vc\include\string(562): error C2065: 'errno' : undeclared identifier
2>c:\program files\microsoft visual studio 11.0\vc\include\string(574): error C2065: 'errno' : undeclared identifier
2>c:\program files\microsoft visual studio 11.0\vc\include\string(579): error C2065: 'errno' : undeclared identifier

我已经尝试将 stdlib.h 包含到 sting 头文件中,但我仍然遇到同样的错误。

感谢任何帮助。

最佳答案

此问题可能有多种可能的原因。这 你应该做的第一件事是创建一个单行源代码:

#include <string>

什么都没有,然后尝试编译它。如果这不 编译,你的安装有问题,你 应该重新安装它。然后,为了确定,删除一切 在您的源代码树中,除了实际的源代码、项目文件和 解决方案,并重建。可能有一些旧文件放置 以某种方式导致问题的原因。我对此表示怀疑,但是 无论如何,这是您升级时应该做的事情 一个编译器,甚至只是安装一个补丁。 (如果你有 一切都在源代码控制之下,你应该这样做, 最简单的解决方案就是删除所有内容,然后做一个新的, 干净的结帐。)

如果这些措施不能解决问题(并且不知何故, 我怀疑他们不会),你的代码库有问题 某处。 errno标准要求是一个宏; 要获取您引用的错误消息,宏必须未定义。 <string>包括(间接地)定义它的文件。鉴于 这个,我能想到的唯一原因是一个较早的包含 文件已经包含一个定义 errno 的文件, 进而 #undef编辑。要验证这一点,请将您的 #include <string>作为 首先包含您的源代码,看看是否可以解决 问题。如果是这样,那么您必须找到该文件 #undef , 并修复它。

关于c++ - 错误 C2065 : 'errno' : undeclared identifier in <string> in Visual Studio 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268352/

相关文章:

c - 自动指向 NULL 的结构指针数组?

java - 使用java从方法返回子字符串

c - C 中的动态大小字符串

c - 为什么 C 在使用条件运算符时不允许连接字符串?

c++ - Visual Studio 2010 和 SSE 4.2

c++ - 如何在 C++ 中获取 .csv 文件的一部分?

c - 即使 SIGKILLed 但正常进程不会做同样的事情,终端也会与所有 child 一起出现故障

c++ - 如何通过声明克服循环依赖?

c++ - 指向结构或类的指针与指向第一个字段的指针

c - 为什么编程语言需要关键字?