繁体   English   中英

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

[英]error C2065: 'errno' : undeclared identifier in <string> in 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 ed它。 为了验证这一点,请将您的#include <string>作为源的第一个include,然后看能否解决问题。 如果是这样,那么您必须找到执行#undef的文件并进行修复。

我遇到过同样的问题。 奇怪的是,问题不包括“使用命名空间std”。 头文件下的include。 显然,除非我识别了“ char”,“ float”等,否则程序将识别“ string”,除非我这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM