error:在查找预编译头时遇到意外的文件结尾

news/2024/10/20 3:58:08/

我遇到的错误是是否忘记向源文件添加"#include “pch.h”",参考下面这篇博客已解决
转载自 https://blog.csdn.net/ghevinn/article/details/36629681

错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?


错误分析:
此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。
(因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #include "stdafx.h" 预编译指示头,所以编译器在此cpp文件中一直到末尾都没有找到它)
我的这个问题发生于我通过添加文件的方式,向MFC内添加现有的一大坨.h和.cpp文件。这些.h和.cpp文件是属于标准C++的开源源代码范畴,与MFC无更深层次的关系。

解决方式:
一.
1) 在解决方案资源管理器中,右击相应的.cpp文件,点击“属性”
2) 在左侧配置属性中,点开“C/C++”,单击“预编译头”
3) 更改右侧第一行的“创建/使用预编译头”,把选项从“使用预编译头(/Yu)”改成“不使用预编译头”
4) 注:每一个报错的.cpp都要如此更改哦~辛苦一下呗~
二.
(不推荐)
1)在解决方案右击工程,点击属性
2)在配置属性 -> c/c++ -> 预编译头 中 将 “使用预编译头(/YU)” 改为 “不适用预编译头”
这种做法会使每次编译过程非常缓慢

备注:
1) 貌似也可以直接在.cpp头文件上include stdafx.h。但没尝试如此修改,因为不想破坏源代码的标准性^_^
2) 感慨一下VC在识别、编译这方面的迟滞-_-,或许是因为太强大了吧,就没考虑周全,竟然还需要手动修改~
3) 有点怀念Qt了……
补充的资料:
出处: http://blog.csdn.net/hotandhot/archive/2006/10/23/1346195.aspx

一、概念:

1、预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个“预编译头文件”的时候,则自动从这个编译结果提取需要的信息进行编译。

2、预编译结果文件(Precompiled header file):就是那个用来保存已经编译了的符号信息的文件(.PCH作为后缀)

3、生成预编译结果文件(Create Precompiled header file):我们说源文件A通过文件B“生成预编译结果文件”是指编译A的时候将其中编译B的编译结果保存成预编译结果文件。一般使用向导的话,A文件就是“stdafx.cpp”,B文件是“stdafx.h”。stdafx.cpp中就一行语句:

#include “stdafx.h”

4、使用预编译头(Using precompiled header):我们说某个源文件(a.cpp)通过“stdafx.h”来使用预编译结果是指编译a.cpp的时候,如果a.cpp第一行include语句是#include “stdafx.h”的话,那么直接取预编译结果文件的结果,不再重新编译”stdafx.h”

二、向导是怎么做的?

1、设置“stdafx.cpp”的预编译选项是通过“stdafx.h”文件来“生成预编译结果文件”。

2、其他源文件的预编译选项设置是通过“stdafx.h”来“使用预编译头”

三、使用原则?

1、将相对稳定的头文件(比如CRT,STL,第三方固定的库)全部写在stdafx.h中。(是否使用stdafx.h依赖个人喜好,不过使用stdafx.h可以和向导保持一致)

2、全部源文件第一行都加#include “stdafx.h”。

3、一些不能修改的源文件(如果公共的代码,不具备权限修改的代码),设置他的预编译选项是“不使用预编译头”。注意,一定不能是选择“自动生成预编译头”,因为这样会将stdafx.h的结果冲掉(这个不知道是BUG还是设计的问题了,.^_^。)。

四、Q&A

Q、为什么不全部使用“自动生成预编译头文件”?

A、“自动生成预编译头文件”和什么都不用没有什么两样,编译速度没有质的提高。

Q、手工添加一个新的源文件到项目的时候,经常出现类似错误:

fatal error C1010: unexpected end of file while looking for precompiled header directive

A、因为向导缺省的设置是“使用预编译头”,但是你新加的文件并没有在第一行包含“stdafx.h”。解决的方法要么修改成“不使用预编译头”,要么添加一行#include “stdafx.h”


http://www.ppmy.cn/news/785865.html

相关文章

opencv无法调用 以及vs报错C1004 发现意外的文件尾

大概率是环境配置出错,但只要是在属性管理器中对应的模式下添加的现有属性表,出错的可能性很小; 今天在环境配置(同样的配置方式其他程序没有报错)和代码(之前运行成功的代码)都没有问题的情况下…

无法完成请求,因为文件格式模块不能解析,PS新手们是否遇到呢?

 无法完成请求,因为文件格式模块不能解析,PS新手们是否遇到呢? 最近很多朋友与同行问我一个问题,说微信里面保存的二维码手机导出后Photoshop软件无法打开,提示:无法完成请求,因为文件格式模块不能解析&…

安装PhotoShop 2023(Beta)后使用时出现创意填充为灰色,不可用的解决办法

最近PhotoShop 2023(Beta)非常的火热,新功能也具备非常多的优点,详情可见下面链接: 使用创意填充体验 Photoshop 的未来 (adobe.com) 话不多说,主要还是谈谈使用时遇到的问题,安装问题自不必多说,搜索引擎…

fatal error C1071: 在注释中遇到意外的文件结束

“{”: 缺少函数标题(是否是老式的形式表?) 用notepad将源文件和头文件修改一下换行符。 修改成对应环境的即可(不改也行)

在查找预编译头时遇到意外的文件结尾

报错显示“在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加"#include "pch.h""?” 解决方案如下:项目→属性→C/C→预编译头→不使用预编译头

微信小程序组件详解

基础标签 视图view view:类似div,块级元素 文本text text:类似span,行内元素 text 组件内只支持 text 嵌套 除了文本节点以外的其他节点都无法长按选中 字体图标icon type:icon的类型 【可选success/success_no_circle/info/warn/wa…

QT--在注释中遇到意外的文件结束

“在注释中遇到意外的文件结束”--记一个令人崩溃的bug 下午写程序,写的好好的,突然报错“在注释中遇到意外的文件结束”。 下面是官方给出的错误原因是缺少注释终结器 (* /)。 // C1071.cpp int main() { } /* this comment is fine */ /* forgot …

关于ps安装遇到的问题解决(转载整理)

1.无法卸载adobe creative cloud(原链接点击这里) 解决办法: 如果您不再需要某个应用程序,则必须使用 Adobe Creative Cloud 桌面应用程序卸载该应用程序。 官方卸载软件点击下载 2.下载完开始安装,点击Setup.exe&…