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

错误描述: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”

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

-------------------------------------------------------------------------

原帖地址:http://blog.csdn.net/ghevinn/article/details/36629681

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

时间: 2024-10-22 07:32:31

fatal error C1010: 在查找预编译头时遇到意外的文件结尾 (转)的相关文章

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

fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加"#include "stdafx.h""? vs开发时经常遇到没加stdafx.h头文件,解决办法就是吧预编译头去掉! fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加"#include "stdafx.h""?,布布扣,bubuko.com fatal error C1010: 在查找

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

错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加"#include "stdafx.h""? 错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx.h". (因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #inc

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

错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx.h".    (因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的(选择了使用,就要在源文件中显式写上#include),但是添加的第三方文件并没有 #include "stdafx.h" 预编译指示头,所以编译器在此cpp文件中一直到末尾都没有找到它)    我的这

VC研究: 使用tinyxml编译出现“fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾”

向项目添加tinyxml用于解析xml内容,总体来说tinyxml还是很方便. 编译时提示"fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾" 分析: 此错误发生的原因是VC编译器在寻找预编译头文件(默认#include "stdafx.h")时,文件未预期结束.也就是没有找到默认的预编译头文件"stdafx.h".而VC中创建每一个cpp默认都会加上"stdafx.h",但添加的第三方类库(比如t

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

在MFC工程下添加了一个新的文件,编译时出现错误,错误描述为: 解决方法: 在解决方案管理器中找到相应的.cpp文件,右键属性,C++--预编译头中选择不使用预编译头.保存后Ctrl + F7重新编译即可. 问题分析: .. 原文地址:https://www.cnblogs.com/xiawuhao2013/p/9704161.html

VS2010遇到fatal error C1083: 无法打开预编译头文件:“xxx.pch”: No such file or directory

对C++和VS2010非常不熟悉,但是无奈赶着项目,只能看了点基础就上手,然后就碰到这个问题了. 原因分析: http://bbs.csdn.net/topics/340191697?page=1 编译器一般都是以文件为单位进行编译,如果修改了工程中的一个文件,那么将导致所有文件都要从新编译,这样的编译将耗费很长时间.      为了提高编译速度,将那些不常被修改,比较稳定,文件单独包含到一个指定的头文件中, 然后生成一个预编译头文件 *.pch . VC中默认的头文件为 stdAfx.h, 但

2016-07-07: 重新编译时vc90.pdb不是创建此预编译头时使用的pdb文件

使用VS2008在一个解决方案中包含多个项目时,当设置多个项目的中间目录为同一个目录时,在增量编译时出现"重新编译时vc90.pdb不是创建此预编译头时使用的pdb文件,请重新创建预编译头问题",从而导致整个解决方案每次都必须重新全部生成. 在msdn上获得如下信息: You may receive a "PRJ0008" or "C2471" or "C1083" or "D8022" or "

fatal error C1083: 无法打开预编译头文件:“Debug\a.pch”:No such file or directory

一.解决方法 右键点击你创建的项目,选择“属性标签”点击属性,弹出“项目属性页”,在左侧找到以下位置  配置属性 -->  C/C++  --> 预编译头,并选择它:在右边的菜单中选择 “创建/使用预编译头”中的“不使用预编译头文件”点击“确定”按钮退出即可. 二.原因分析 编译器一般都是以文件为单位进行编译,如果修改了工程中的一个文件,那么将导致所有文件都要从新编译,这样的编译将耗费很长时间.      为了提高编译速度,将那些不常被修改,比较稳定,文件单独包含到一个指定的头文件中, 然后生

解决VS在查找预编译头使用时跳过

(1)fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "stdafx.h (2)解决VS在查找预编译头使用时跳过 visual studio默认在查找预编译头StdAfx.h使用时跳过,如果没有找到#include "StdAfx.h"会导致错误, 但是有包含StdAfx.h.但是cpp文件和StdAfx.h不在一个目录下(比如#include "../StdAfx.h")会导致错误. 解决