当前位置: 首页 > news >正文

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

错误描写叙述: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了……
 
 
补充的资料:
出处: 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”

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

转载于:https://www.cnblogs.com/mqxnongmin/p/10565493.html

相关文章:

  • c# Winform dev控件之ChartControl
  • Spring框架学习07——基于传统代理类的AOP实现
  • html迪士尼网页实现代码
  • HDU 2159 FATE
  • es 基于match_phrase/fuzzy的模糊匹配原理及使用
  • spring_事務
  • ASP.NET Core OData now Available
  • 01背包 完全背包 算法解析
  • 解决任务计划程序未启动任务,因为相同任务的实例正在运行的问题
  • 关于oracle的一些函数(数字、字符、转换、空值)
  • 安卓开发笔记(十五):编写一款能够查看任意网站源代码的应用程序
  • Spring拓展接口之FactoryBean,我们来看看其源码实现
  • 王者荣耀刷金币小程序
  • Linux学习之文件系统权限及表示
  • js经典面试题
  • 【EOS】Cleos基础
  • 5、React组件事件详解
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • canvas 绘制双线技巧
  • gf框架之分页模块(五) - 自定义分页
  • HashMap剖析之内部结构
  • ng6--错误信息小结(持续更新)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python_OOP
  • scala基础语法(二)
  • 高程读书笔记 第六章 面向对象程序设计
  • 回顾2016
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 手写双向链表LinkedList的几个常用功能
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 追踪解析 FutureTask 源码
  • No resource identifier found for attribute,RxJava之zip操作符
  • 你对linux中grep命令知道多少?
  • ​力扣解法汇总946-验证栈序列
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (06)金属布线——为半导体注入生命的连接
  • (8)STL算法之替换
  • (C++17) std算法之执行策略 execution
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (poj1.3.2)1791(构造法模拟)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (九)One-Wire总线-DS18B20
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)大道至简,职场上做人做事做管理
  • .Net MVC4 上传大文件,并保存表单
  • .net 按比例显示图片的缩略图
  • .net 使用ajax控件后如何调用前端脚本
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET企业级应用架构设计系列之技术选型
  • .net中应用SQL缓存(实例使用)
  • .stream().map与.stream().flatMap的使用