错误C2065:'errno':Visual Studio 2012中<string>中未声明的标识符

Ras*_*yak 1 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
Run Code Online (Sandbox Code Playgroud)

我曾尝试与包括stdlib.hsting头文件,但还是我收到此相同的错误.

任何帮助赞赏.

Jam*_*nze 5

这个问题可能有几种可能的原因.您应该做的第一件事是创建一个单行来源:

#include <string>
Run Code Online (Sandbox Code Playgroud)

没有别的,并尝试进行编译.如果这不能编译,则表明您的安装存在问题,应该重新安装.然后,就可以肯定,删除一切都 在你的源代码树,除了实际的来源,项目文件和解决方案,并重建.可能存在一些旧文件,这些文件以某种方式导致问题.我对此表示怀疑,但无论如何,无论如何,无论何时升级编译器,甚至只是安装补丁,都应该这样做.(如果您已将所有内容都置于源代码控制之下,那么最简单的解决方案就是删除所有内容,然后进行全新的清理检查.)

如果这些措施无法解决问题(不知何故,我怀疑他们不会),那么你的代码库就会出现问题. errno按标准要求是宏观; 要获取您引用的错误消息,宏必须是未定义的. <string>包括(间接)定义它的文件.鉴于此,我能想到的唯一原因是早期的包含文件已经包含了一个定义的文件errno,然后 #undef编辑它.要验证这一点,请将您的信息#include <string>作为源代码的第一个包含,并查看是否可以解决问题.如果是,那么你必须找到执行该操作的文件#undef并进行修复.