美文网首页
关于预编译头文件

关于预编译头文件

作者: Drlilian | 来源:发表于2019-06-17 10:29 被阅读0次

2009-04-29

对预编译头文件说明如下:

所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。

预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。

编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

因此,所有的CPP实现文件第一条语句都是:#include "stdafx.h"。

另外,每一个实现文件CPP都包含了如下语句:

#ifdef _DEBUG

#undef THIS_FILE

static char BASED_CODE THIS_FILE[] = __FILE__;

#endif

这是表示,如果生成调试版本,要指示当前文件的名称。__FILE__是一个宏,在编译器编译过程中给它赋值为当前正在编译的文件名称。

下面是侯捷老师的说法:

2. 使用 AppWizard Project file 中想要加入 .cpp file

> 在 Compiling 过程会被要求请加入 "stdafx.h"

> 请问可以避免吗?

你是问「一个 project 之中可否不要 stdafx.h」吗?答案是可以,

但你的日子会从此更辛劳些。

随便看一个由 AppWizard 产生的 project,其 stdafx.h 内是一些

必要的 include files(例如 afxwin.h)。对应於 stdafx.h 则有

一个 stdafx.cpp,其内只是 #include "stdafx.h"。这有什麽用意?

用意是,让 stdafx.cpp 编译出一个 stdafx.obj,成为

所谓的 "pre-compile-header"(需搭配特殊 compile option。

AppWizard 会为我们的 project 自动设定这个特殊的 option),

可大幅降低第二次(以降)的编译所需时间(因为标准 MFC headers

不需再编译一次)。

往後,你每使用 ClassWizard 协助开发此程式,ClassWizard 便有

可能在 stdafx.h 中增加新的 include files。例如,你若选用

MFC template classes,stdafx.h 中便会增加 #include <afxtempl.h>。

如果你不要 afxstd.h,意味你得自己 take care 这些事情。

--- the end

最后要注意的是::

在声明包含stdafx.h的语句之前的语句都将被完全忽略。例如:

abcdefg

#include "stdafx.h"

能编译通过。

所以

#include <math.h>

#include "stdafx.h"

中,"math.h"也将被忽略。

避免上述错误的方法是将包含语句放在"stdafx.h"之后或者更好的方法是将其放在"stdafx.h"文件中。

相关文章

  • 关于预编译头文件

    2009-04-29 对预编译头文件说明如下: 所谓头文件预编译,就是把一个工程(Project)中使用的一些MF...

  • GeekBand.重学C++(1)

    0x01. 关于头文件 头文件保护 头文件保护,是为了避免重复包含头文件中的声明和定义,导致重定义错误或者编译器找...

  • iOS关于pch文件

    pch文件是什么 预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件里。这些预...

  • linux 多线程&线程同步

    1. 头文件与编译选项 头文件:#include 编译选项:-lpthread 2. 线程相关函数 创建线程int...

  • iOS预编译头文件_PCH

    PCH--预编译头文件 全称 (Precompiled Header) 程序设计时将头文件编译为中间格式,以节约开...

  • C++ stdafx.h与头文件

    1.头文件不直接参与编译,而参与预编译,当头文件被include时才被编译使用。因此vs的c++工程中有一个默认的...

  • IOS开发框架搭建--添加pch预处理文件

    .pch文件即预编译头文件,可以用于引入一下常用的.h头文件的引用。编译器就会自动的将pch文件中的头文件添加到所...

  • Xcode8.3预编译模式官方文档翻译

    有了预编译桥接头文件 混合编译会变得更加快 在多次编译运行了包含复杂桥接头文件的OC和Swift的混合项目后我们检...

  • PCH文件的创建和配置

    PCH(Precompile Prefix Header File)文件,也就是预编译头文件。pch头文件的内容能...

  • 笔记整理之 - ios如何配置pch文件

    PCH(Precompile Prefix Header File)文件,也就是预编译头文件。pch头文件的内容能...

网友评论

      本文标题:关于预编译头文件

      本文链接:https://www.haomeiwen.com/subject/ekczxctx.html