c++ - 如何包含根目录中的 stdafx.h?

标签 c++ visual-c++

在 VS 中启用“显示所有文件”选项后,我添加了一个文件夹并在该文件夹中创建了一个新类。由于我使用的是预编译头文件,因此我还需要包含相对于新类文件的根目录中的 stdafx.h。

在我的 cpp 文件中,我有

#include "..\stdafx.h"

但我收到以下错误:

error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?

我的理解是,.. 应该指示编译器上一级目录?

最佳答案

Visual C++ 允许您定义几种设置预编译头文件的方法。最常见的是在项目配置级别为所有源文件启用它,在 Configuration Properties/C++/Precompiled Headers 下,设置“Precompiled Header”,选择“Use”。设置“预编译头文件”的相同位置通常是“stdafx.h”。所有文件都将获得此设置(因此项目中的配置)除了....

一个文件负责生成 PCH 文件。该文件通常是项目中的 stdafx.cpp 文件,除了 #include "stdafx.h" 之外,它通常没有任何内容。为那个文件配置预编译头文件,从“使用”切换到“创建”。这确保了如果 PCH 的主要 header 不同步,stdafx.cpp 总是首先编译以重新生成 PCH 数据文件。在 Visual Studio 中还有其他配置 PCH 设置的方法,但这是最常见的。

话虽如此,您的问题绝对令人恼火。用于启动 PCH 系统并在上面的“使用...”和“创建...”设置中指定的文件名必须与 #include 中的文本完全匹配

因此,您很有可能可以通过在项目包含目录中添加“..”并从#include 语句中删除“..”来解决您的问题。您也可以在项目配置级别将其更改为“..\stdafx.h”作为直通标题,但如果您在多个文件夹中分层存放源文件,这可能会出现问题。

哦,如果您在阅读 PCH 配置设置时不清楚,如果您不想将 PCH 用于任何特定的源文件(有时也有理由不这样做),您可以将其关闭以用于特定的源文件,否则请确保在每个源文件(c/cpp 等)的开头始终包含 #include "your-pch-include-file.h"。

希望你能休息一下。

关于c++ - 如何包含根目录中的 stdafx.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434123/

相关文章:

c++ - 如何将 FIBMAP 返回的数据转换为磁盘的 LBA 扇区?

c++ - XML 验证器库

c++ - 出现随机 ascii 字符

c++ - MSVC : explicit template instantiation fails while implicit instantiation succeeds

c++ - 有条件地替换字符串中的正则表达式匹配

c++ - 处理 syskeydown 消息时禁用烦人的声音

c++ - 我的类方法中需要 "this pointer"吗?

c++ - 关于封装和继承实践的问题

c++ - 在 VC++ 中从 MSI(数据库)定位文件路径

c++ - 未定义对 ‘_imp__InitBizLib’ 的引用