`

error C1010: 预编译头文件编译异常

 
阅读更多

 

概念:

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”

 

 

错误:

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

原因:在编译的时候,我们使用了预编译头的功能,但是在一些cpp中,我们又没有使用到这些预编译的头文件,导致那些没有使用到的cpp出错。

解决方案:

1.将相对稳定的头文件(比如CRT,STL,第三方固定的库)全部写在stdafx.h中。(是否使用stdafx.h依赖个人喜好,不过使用stdafx.h可以和向导保持一致)。这是一种规范,相当于把当前工程对第三方的引用,集中到stdafx.h中。

2.全部源文件第一行都加#include “stdafx.h”。这样所以的cpp都使用到了预编译头文件了,也不会出现错了。

3.一些不能修改的源文件(如果公共的代码,不具备权限修改的代码),设置他的预编译选项是“不使用预编译头”。注意,一定不能是选择“自动生成预编译头”,因为这样会将stdafx.h的结果冲掉(这个不知道是BUG还是设计的问题了,.^_^。)。这个是针对一些第三方源文件的特殊情况来说的。

 

注意:上述做法只是对编译效率有所提升,对程序运行本身无特别影响。如果你选择自动生成预编译头文件,编译时会慢一点,你不会碰到上述错误,程序的运行也无影响。

分享到:
评论

相关推荐

    终于搞懂了,预编译头文件

    .. <br>fatal error C1010: unexpected end of file while looking for precompiled <br>header directive <br>Generating Code... <br>2)如果你把pch文件不小心丢了,编译的时候就会产生很多的不正常...

    fatal error C1083: 无法打开包括文件:“stdint.h”: No such file or directory

    fatal error C1083: 无法打开包括文件:“stdint.h”: No such file or directory 【错误】fatal error C1083: 无法打开包括文件:“stdint.h”: No such file or directory 【原因】stdint.h是c99标准的头文件,vc不...

    VC++常见错误一览表

    1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h") 2、fatal error C1083: ...

    #pragma预编译指令详解

    四、 #pragma hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译。 3 五、 #pragma warning指令 3 六、 pragma comment(...) 5 七、 #pragma的用法 7 (1) message 参数。 8 (2) 另一个使用得比较多的...

    最常见的20种VC++错误

    最常见的20种VC++错误,比如:1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h...

    VC++最常见的20种编译错误信息

    1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h") 2、fatal error C1083: ...

    ipxe编译依赖lzma头文件

    编译ipxe时依赖lzma.h头文件,会抛fatal error: lzma.h: No such file or directory异常,由于依赖xz-dev rpm包,ipxe自己又不提供

    CPlusPlusXML.rar

    tinyxml 解析xml的例子,如果出现:vc编程中出现 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?解决办法 菜单--〉项目--〉设置,出现“项目设置”对话框,...

    Linux中gdb查看core堆栈信息

    fatal error C1010: unexpected end of file while looking for precompiled header directive Generating Code... 2)如果你把pch文件不小心丢了,编译的时候就会产生很多的不正常的行为。根据以上 的分析,你只要...

    C 语言常见错误 .txt

    1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")

    qt关于编译fontconfig缺少的头文件

    qt关于编译fontconfig缺少的头文件,跟我的博客关于如何编译qt-pc,qt-x86,qt-arm,缺少中文字体的支持,和编译fontconfig.h的头文件。

    WTL10 的库头文件

    WTL10的版本,已编译测试通过过,Windows Template Library (WTL); 可解决WTL老版本编译遇到如下问题: atlapp.h(573): error C3861: ...atlapp.h(573): error C2039: “AtlGetCommCtrlVersion”: 不是“ATL”的成员

    《C深度解析》第二章 C预编译——宏定义、条件编译、头文件包含、特殊预编译关键字

    课程内容:(1)回顾c预编译(2)宏定义:无宏体宏、有宏体宏、带参宏、宏定义与复杂表达式。(3)条件编译:#if、#else、#elif #endif、#ifdef和#ifndef、#if与defined、条件编译与配置文件(4)一些特殊的预编译...

    Codewarrior编译出现的错误以及解决方法

    文档描述了feescale 编译工具Codewarrior编译出现的错误以及解决方法,感觉挺有用,分享分享

    EVC-compile-error--.pch.rar_evc error C4509

    evc编译时关于预编译头文件.pch出错时的解决方法

    qedit.h头文件下载-directshow中qedit库文件

    vs2010 directshow工程中可能缺少qedit库文件,导致编译失败,错误:fatal error 无法打开包括文件:“qedit.h”: No such file or directory

    powerBuilder编绎成DLL格式需要的EN32T.H头文件

    "Error opening file 'c:\windows\system32\cgen\en32t.h'" 这个错误的解决方法 下载这个文件后,说明看我的博文: http://blog.csdn.net/aasmfox/archive/2010/12/25/6097561.aspx 希望对需要的菜鸟有所帮助 ...

    c51fps.lib

    FILE: E:\KEIL\C51\LIB\C51FPS.LIB ,这是由于虽然math.h这个头文件添加进去了,但是很多朋友装的keil c不是完整版本,缺少c51fps.lib这个进行浮点运算的库文件,下载这个库文件添加keil c的库中就可以编译成功了。

    基于VS2015编译器编译的 FFmpeg 静态库文件

    本压缩包中,包含了ffmpeg相关的lib和头文件。 lib清单如下: libavcodec.lib libavfilter.lib libavutil.lib libswscale.lib libavdevice.lib libavformat.lib libswresample.lib 使用VS2015工具链编译的 ...

    无法打开包括文件:“stdint.h”

    fatal error C1083: 无法打开包括文件:“stdint.h”: No such file or directory stdint.h是c99标准的头文件,vc不支持,所以肯定会提示“No such file or directory”的。 解决办法:下载文件之后将文件移动到...

Global site tag (gtag.js) - Google Analytics