Visual C ++ Express 2010突然不接受#includes

时间:2011-05-20 15:20:29

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

我正在使用#define编辑所有包含文件的API。我正在使用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的新手,可能有不止一种方法做到了......)。

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

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

This knowledge base article建议:

  

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

禁用预编译的标头。它应该有所帮助。