fatal error C1010: 在查找预编译头时遇到意外的文件结尾
Posted sev
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fatal error C1010: 在查找预编译头时遇到意外的文件结尾相关的知识,希望对你有一定的参考价值。
-- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"" --
错误很明显的指向了.cpp中没加#include "stdafx.h",但有工程属性-> C/C++ -> 预编译头中选择“不使用预编译头”后同样也会报错。
查找发现原来是工程中添加的第三方文件导致。这些cpp文件中一直到末尾都没有找到“stdafx.h”。
解决方式:
设置第三方文件中所有.cpp文件的属性-> C/C++ -> 预编译头,选择“不使用预编译头”。(*.cpp可多选一起设置)
相关的预编译概念 http://blog.csdn.net/hotandhot/article/details/1346195
一、概念: 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就什么内容都不写!
以上是关于fatal error C1010: 在查找预编译头时遇到意外的文件结尾的主要内容,如果未能解决你的问题,请参考以下文章
错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?(转)
解决错误 fatal error C1010: unexpected end of file while looking for precompiled head
error C1010:在查找预编译头文件时遇到意外的文件结尾——————vs错误
Visual Studio解决错误 fatal error C1010: unexpected end of file while looking for precompiled head(转)(
Error:fatal error C1010: unexpected end of file while looking for precompiled head
fatal error C1010: unexpected end of file while looking for precompiled head