【问题标题】:Visual C++ Express 2010 suddenly won't accept #includesVisual C++ Express 2010 突然不接受#includes
【发布时间】:2011-05-20 15:20:29
【问题描述】:

我正在使用一个 API,其中包含 #defineed 所有的包含文件。我正在使用 Visual C++ 2010 Express 进行开发,到目前为止一切正常。

我在项目中添加了一个新的 cpp 文件,但不小心添加了一个“Windows 窗体”。 VC 警告我,我的项目目前没有使用 CLR,我真的想要吗?我单击否,并按预期添加了文件。然而,在那之后,我的项目不再编译。

代码基本上是这样的:

api_header.h

#define DEFINED_HEADER_NAME "path/to/header/file.h"

stdhpf.h

#include DEFINED_HEADER_NAME

正如我所说,工作了很长时间。现在我明白了:

错误 C2006:'#include':需要一个文件名,找到 'identifier'
致命错误 C1083:无法打开包含文件:'':没有这样的文件或目录

这是什么原因造成的?我发现一些帖子说这是因为打开了预编译头,但我检查了Project properties > Configuration properties > C/C++ / Precompiled headers,它已经关闭(我提到了设置路径,因为我是 VS 新手,可能有不止一种方法可以做到这一点...)。

有什么想法吗?

【问题讨论】:

    标签: c++ visual-studio visual-c++ compiler-errors visual-c++-2010-express


    【解决方案1】:

    问题几乎可以肯定在于这两个语句的预处理顺序,而不是与无意中添加了一个 Windows 窗体对象有关。

    This knowledge base article 建议:

    问题在于使用定义的常量在#include 指令中指定包含文件。在宏完全展开之前正在处理指令,导致错误。

    第二个错误似乎证实了这一点,因为它表明预处理器正在搜索一个名称为空的包含文件:

    fatal error C1083: Cannot open include file: '': No such file or directory
    

    【讨论】:

      【解决方案2】:

      包含文件的顺序已更改。也许 Visual Studio 在您的 #include "api_header.h" 前面的某处插入了 #include "stdhpf.h"

      【讨论】:

        【解决方案3】:

        禁用预编译头文件。它应该会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-08
          • 2011-06-30
          • 1970-01-01
          • 2011-06-20
          • 1970-01-01
          相关资源
          最近更新 更多