5

我正在使用一个已经#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 新手,可能有不止一种方法可以做到这一点...... )。

有任何想法吗?

4

3 回答 3

7

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

这篇知识库文章建议:

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

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

fatal error C1083: Cannot open include file: '': No such file or directory
于 2011-05-20T15:27:14.097 回答
0

您的包含文件的顺序已更改。也许 Visual Studio#include "stdhpf.h"在您的#include "api_header.h".

于 2011-05-20T15:36:39.837 回答
0

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

于 2015-06-29T10:48:54.657 回答