1

我有一个项目正在运行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文件中,但仍然遇到同样的错误。

任何帮助表示赞赏。

4

2 回答 2

5

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

#include <string>

仅此而已,并尝试编译它。如果这不能编译,那么你的安装有问题,你应该重新安装它。然后,可以肯定的是,删除源代码树中 实际源代码、项目文件和解决方案之外的所有内容,然后重新构建。可能有一些旧文件以某种方式导致问题。我对此表示怀疑,但无论如何,无论何时升级编译器,甚至只是安装补丁,您都应该这样做。(如果您应该将所有内容都置于源代码控制之下,那么最简单的解决方案就是删除所有内容,然后进行新的、干净的签出。)

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

于 2013-08-16T08:16:34.220 回答
0

我遇到过同样的问题。奇怪的是,问题不包括“使用命名空间标准;” 头文件下包含。显然,除非我这样做,否则程序会识别“string”,即使“char”、“float”等被识别。

于 2013-10-23T05:40:41.873 回答