VS2010编译错误:是否忘记了向源中添加“#include "stdafx.h(转)

转载 2014年04月02日 11:44:35

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

一、概念:

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总觉得是和编译平台绑定了,不具备移植性?

A、其实,注意一下stdafx.h的写法就没有问题了。我的解决方案是(stdafx.h的内容):

–begin of file stdafx.h

#ifdef _WIN32

#include “win.h”    // 泛指window下的公共头文件

#else

#include “linux.h”    // 泛指linux下的公共头文件

#endif

#include “crt.h”      //泛指c标准库

#include “stl.h”      //泛指STL库

–end of file

或者更加简单一点,如果不是VC编译器,那么stdafx.h就什么内容都不写!

原文出处:http://blog.sina.com.cn/s/blog_58649eb30100th2k.html

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

错误 16 error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”? c:\gsoap\gsoap-2.8\gsoap\stdso...
  • testcs_dn
  • testcs_dn
  • 2016年05月20日 11:19
  • 16911

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

 解决方式: 一. 1) 在解决方案资源管理器中,右击相应的.cpp文件,点击“属性” 2) 在左侧配置属性中,点开“C/C++”,单击“预编译头” 3) 更改右侧第一行的“创建/使用预...
  • liulina603
  • liulina603
  • 2015年04月14日 16:30
  • 18694

VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法

VS2013/2012下代码一写上去保存就报错了,下方提示无法打开 源 文件“stdafx.h” 如图: 百度了一下,对于VS2010有这样的方法可以解决: 在项目属性中...
  • u012948693
  • u012948693
  • 2016年04月09日 18:58
  • 1170

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

一、概念: 1、预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个“预编译头文件”的时候,则自动从这个编译结果提取需要的...
  • daming911230
  • daming911230
  • 2014年08月14日 18:42
  • 723

Visual C++中 #include "stdafx.h" 头文件的用法

今天在做VC++实验时,总是出现莫名其妙的错误。比如说: unexpected end of file whilelooking for precompiled header directive ...
  • aidem_brown
  • aidem_brown
  • 2016年03月10日 19:43
  • 1653

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

解决方案: 1.检测是否加了stdafx.h .没有加的话加上 2.检测到加了stdafx。h,但没有把#include"stdafx.h"放到*。cpp文件最开头同样会出现这个错误。 ...
  • jia_zhengshen
  • jia_zhengshen
  • 2013年05月23日 11:17
  • 1287

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

错误描述:fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include"stdafx.h"”? 错误分析:     此错误发生的原因是编译...
  • liuyinghui523
  • liuyinghui523
  • 2014年04月14日 14:43
  • 606

有关头文件“stdafx.h”的问题的解决

有关头文件“stdafx.h”的问题的解决由于经常使用vs编写程序,所以会遇到很多的问题。在此总结了一些在使用vs编写c++的常见的问题和解决方法提供给大家参考。 编译语言:c++ 编译环境:vs...
  • SchopenhauerZhang
  • SchopenhauerZhang
  • 2016年04月10日 16:51
  • 4316

关于在线安装vs2017缺少头文件的解决办法

解决在线安装vs2017缺失头文件的问题
  • HEVC_LG
  • HEVC_LG
  • 2017年06月30日 17:11
  • 3675

C++中总是出错 #include "stdafx.h"语法错误

C++中总是出错 #include "stdafx.h"语法错误 最近在VS2010中新建一个MFC DLL时,出现: #include "stdafx.h"语法错误 解决方案: 在项目-...
  • m0_37407756
  • m0_37407756
  • 2017年04月16日 20:58
  • 1166
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2010编译错误:是否忘记了向源中添加“#include "stdafx.h(转)
举报原因:
原因补充:

(最多只允许输入30个字)