预处理和预编译、预编译头文件stdafx.h和pch.h

预处理和预编译

预处理:发生在编译前,做些代码文本的替换工作。

  • 宏定义:#define宏定义的替换。
  • 文件包含:#include指明的源程序文件嵌入到当前源文件的指令位置处。
  • 条件编译:根据标识符来判断程序段是否需要编译这段代码。
// 条件编译
#ifdef	标识符
	程序段1
#else
	程序段2
#endif

预编译:发生在编译中,先预先编译某个文件并保存起来(预编译头文件),在编译遇到需要这个文件的地方直接拿来用。

预编译头文件

预编译头文件是什么:预编译头文件(Precompiled Header)实际上就是抓取一堆头文件,并把它们转换成为编译器可以使用的格式,从而不必一遍遍重新编译这些头文件。

为什么需要预编译头文件?
使用预编译头文件主要是为了节省编译的时间
平时写小的项目可能不会用到,一般大型项目会用的比较多。
在一个项目中,如果需要大量使用某个头文件的内容,例如string,那么编译的时候每次#include<string>的时候,都需要重新读取整个string头文件并且编译它。读取编译这个过程,预处理器需要复制string文件内容复制并解析,最后标记编译。当需要大量使用的时候,使用预编译头文件就只需要一次编译。

什么头文件适合放进预编译头文件?

  • 始终使用不常更改的一大段代码,例如外部依赖的库,那些基本用户不会去修改的代码。预编译文件仅在它或它包含的任何文件发生更改时进行编辑,如果是需要经常修改的代码放入,那么修改后编译就会导致整个预编译头文件都要重新编译。
  • 程序包含多个模块,所有这些模块都使用一组标准的包含文件和相同的编译选项,这样的话就不需要重复include很多。

stdafx.h和pch.h

stdafx.h和pch.h都是在Windows平台上使用的预编译头文件,是Microsoft Visual Studio 中自动生成,其它编译器不用,VS专用。

stdafx.h和pch.h本质上是相同的,只是在Visual Studio 2017及更高版本中,stdafx.h改为了pch.h。

如何使用预编译头文件

在stdafx.h和pch.h中添加需要预编译的头文件即可,然后在需要这些头文件的cpp文件夹中添加#include"stdafx.h"或者#include"pch.h"。

在MFC中,stdafx.h和pch.h文件中自动包含了MFC标准头文件(如Windows.h、Afxwin.h等),所以在需要的这些标准头文件的时候可以不用单独引用,而是直接引用stdafx.h或pch.h。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值