[英]error C2065: 'errno' : undeclared identifier in <string> in Visual Studio 2012
我有一个在Visual Studio 2010
运行的项目。 现在,我正在使用Visual Studio 2012
。 现在我在构建项目时遇到错误。 我也研究了Google
和SO
。 但是我没有办法解决。
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.