`

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还是设计的问题了,.^_^。)。这个是针对一些第三方源文件的特殊情况来说的。

 

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

分享到:
评论

相关推荐

    修复VS2008fatal error1853 意外的预编译头错误

    1. **预编译头文件修改**:如果你在代码中包含了预编译头文件,并且在编译后修改了该头文件,但没有重新执行预编译步骤,编译器就会报错,因为它找不到与当前源文件匹配的预编译头。 2. **项目设置不一致**:如果你...

    解决fatal error C1010 unexpected end of file while looking for precompiled header

    在编程过程中,尤其是在使用Microsoft Visual Studio (VC) 进行C++开发时,可能会遇到一个编译错误:“fatal error C1010: unexpected end of file while looking for precompiled header directive”。这个错误通常...

    编译出错可以参考本文

    3. **项目设置问题**:项目的编译设置中指定了错误的预编译头文件或没有正确配置预编译头文件的使用。 4. **文件权限问题**:如果预编译头文件所在的目录权限设置不当,也可能导致无法打开该文件。 5. **编译器...

    解决error C2065: '_beginthreadex' :undeclared identifier

    在编译过程中遇到“Error C2065:'_beginthreadex':undeclared identifier”这一错误信息时,通常意味着编译器无法识别`_beginthreadex`函数,即该函数未被正确声明或包含。`_beginthreadex`是用于创建新线程的一个...

    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不...

    C语言编译时常见错误分析

    本文将详细分析fatal error C1003、fatal error C1004、fatal error C1083、fatal error C1903、error C2001、error C2006、error C2007、error C2008、error C2009、error C2010、error C2014、error C2015、error ...

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

    当编译器遇到“error C4509”时,这意味着预编译头文件中包含了不应该存在的函数声明或定义,这些函数可能涉及到特定的初始化或清理操作,而这在预编译头文件中是不被支持的。 解决这个问题的方法主要包括以下几个...

    各种C++预编译命令

    hdrstop参数可以指定预编译头文件的结束位置,格式为: `#pragma hdrstop` 这可以防止某些头文件被预编译。 startup参数 startup参数可以指定编译优先级,格式为: `#pragma startup` 这可以用来指定单元之间...

    VS90SP1-KB976656-x86.zip

    错误C1859通常表示预编译头文件的状态与源代码中的状态不匹配,这可能是由于以下原因: 1. **预编译头文件修改**:如果你在编译过程中修改了预编译头文件,而没有重新编译它,会导致预编译头文件与源代码不一致。 2...

    预编译出错

    "fatal error C1853" 是一个特定的编译错误,它发生在Visual Studio 2008 (VS2008) 中,表示预编译头文件(通常命名为stdafx.h)未能正确地预编译或与当前项目中的源代码不兼容。这种问题可能由多种原因引起: 1. *...

    fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”

    ### 解决方案:“fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”” 在使用Visual Studio 2008 (VS2008) 进行开发时,可能会遇到一个常见的错误:“fatal error C1083: 无法打开包括文件:...

    #pragma预编译指令详解

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

    解决error LNK2001: unresolved external symbol

    在编译VC项目时,经常会遇到error LNK2001: unresolved external symbol的错误,这个错误是由于缺少某些库文件而引起的。在这里,我们总结了三种常见的情形,并提供了解决方案。 一、解决error LNK2001: unresolved...

    C语言预编译命令用法

    4. **#pragma hdrstop**:该指令用于指示预编译头文件到此为止,后续的头文件将不会被预编译。这在某些情况下可以节省磁盘空间,因为不是所有的头文件都需要预编译。 5. **#pragma startup和#pragma package(smart_...

    VS90SP1-KB976656-x86.exe

    描述中提到的"unexpected precompiled header error"是一个常见的编译错误,这通常发生在使用预编译头文件(.pch文件)时。预编译头文件是为了加速编译过程,将常用但不经常改变的头文件预先编译。当编译器遇到这个...

    itk,错误:use /Zm to specify a higher limit解决办法

    - 如果出现 “Cannot open precompiled header file” 的错误,可能是因为预编译头文件不存在或路径不正确。 - 检查预编译头文件的路径是否正确,并确保所有依赖项都已正确配置。 - **浏览信息问题**: - 在VS...

    C语言几个预编译指令的用法

    C语言预编译指令是在编译器进行编译之前对源代码进行预处理的一部分指令。预编译指令的目的是提高代码的可维护性、可扩展性和重复使用性。预处理过程通常包括文件包含、宏定义、条件编译和错误处理等方面的功能。...

    C++开发常见问题.txt

    **问题描述**:在编译过程中遇到“fatal error C1010”错误,提示在寻找预编译头文件指令时意外遇到了文件结尾。 **原因分析**: 1. **缺少`#endif`**:这是最常见的原因之一,通常出现在条件编译指令(如`#if`、`#...

    VS90SP1-KB976656-x86-VC2008.zip

    然而,当预编译头文件与源代码之间的同步出现问题时,就可能出现C1859错误。 错误C1859通常有以下几种可能的原因: 1. **预编译头文件过时**:如果预编译头文件(通常命名为stdafx.h和stdafx.obj)没有与源代码中...

    20种VC++编译错误信息

    fatal error C1010: unexpected end of file while looking for precompiled header directive **描述**:此错误发生在预编译头文件(如`stdafx.h`)未正确包含的情况下。 **解决方案**: - 确保在项目设置中正确...

Global site tag (gtag.js) - Google Analytics