文档章节

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

o
 osc_y8yehimr
发布于 2019/03/20 16:01
字数 1202
阅读 24
收藏 0
c++

精选30+云产品,助力企业轻松上云!>>>

错误描写叙述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。

是否忘记了向源中加入“#include "stdafx.h"”?


错误分析:
      此发生错误的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。

    (由于project中的每个cpp文件属性默认都是使用预编译头(/YU)的,可是加入的第三方文件并没有 #include "stdafx.h" 预编译指示头,所以编译器在此cpp文件里一直到末尾都没有找到它)
     我的这个问题发生于我通过加入文件的方式,向MFC内加入现有的一大坨.h和.cpp文件。

这些.h和.cpp文件是属于标准C++的开源源码范畴,与MFC无更深层次的关系。


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

备注:
1) 貌似也能够直接在.cpp头文件上include stdafx.h。但没尝试如此改动,由于不想破坏源码的标准性^_^
2) 感慨一下VC在识别、编译这方面的迟滞-_-,也许是由于太强大了吧。就没考虑周全,居然还须要手动改动~
3) 有点怀念Qt了……
 
 
补充的资料:
 

一、概念:

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”

Q、加stdafx.h和stdafx.cpp总认为是和编译平台绑定了,不

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
【转】在VC空白项目里添加自定义的预编译头

在VC空白项目里添加自定义的预编译头 整篇只要看画出红线的部份就可以了,应该会节省你一些时间. 这里有个概念要先说明. 1>代码里面至少要有个CPP是用于创建预编绎头的. 2>其它CPP则都是选使用...

超能123
2012/12/27
89
0
PCL配置VS2017时出现的一些小问题

首先,来看第一问: 1:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "pch.h"”?   估计时在编译时没有找到include “pch.h”头文件,查了很多...

osc_m9b5s62g
2019/08/03
1
0
【Visual C++】关于无法打开包括文件:“StdAfx.h”或者意外结尾的错误解决方案

最近有朋友在编译我提供的【Visual C++】游戏开发某一节笔记的源代码的时候,提到出现 “fatal error C1083: 无法打开包括文件:“StdAfx.h”这个错误。这里我专门找了点资料,然后部分修改,...

长平狐
2012/11/12
497
0
VS2008操作及出现的编译问题

1、注意新建.CPP或者.H时注意文件所对应的路径,否则出现编译不通过; 2、编译出现错误:"fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdaf...

xiaofufox
2016/11/21
3
0
fatal error C1010: 在查找预编译头时遇到意外的文件结尾

错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”? 错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#in...

osc_lntwp5op
2018/03/13
1
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux系统检查用户账户到期时间

如果你在 Linux 上启用了密码策略。密码必须在到期前进行更改,并且登录到系统时会收到通知。如果你很少使用自己的帐户,那么可能由于密码过期而被锁定。在许多情况下,这可能会在无需密码登...

老孟的Linux私房菜
35分钟前
13
0
关于南京哪里有开餐饮费发票?

关于南京哪里有开餐饮费发票?聚焦餐饮行业,谈话〖18 7一電一7 5 3 8一徴一3331〗研究院昨发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元.随着餐饮行业的快速...

点击fojewio
今天
7
0
android studio 4.0 打开DDMS

1、先找到AndroidStudio配置的SDK路径; 2、在SDK的/tools/路径下有个monitor.bat 的批处理文件; 3、鼠标连续点击两下monitor.bat这个批处理文件,在屏幕上会打开一个类似CMD的命令行中输入...

chenhongjiang
今天
10
0
如何在Android中使用SharedPreferences来存储,获取和编辑值

问题: Closed . 已关闭 。 This question needs to be more focused. 这个问题需要更加集中。 It is not currently accepting answers. 它当前不接受答案。 Learn more . 了解更多 。 Want...

fyin1314
今天
6
0
【JDK1.8】LinkedList源码分析

LinkedList的特性 LinkedList内部使用双向链表作为存储结构,LinkedList可以理解为链表的扩展对象,封装了常用的和非常用的操作链表的方法。以及在通过索引获取元素时的简单优化,通常Linke...

XuePeng77
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部