预编译头文件
本文主要C++中的“预编译头文件”技术,内容包括该技术的概述、作用、适用场景、使用方法、例子等。
什么是预编译头文件
预编译头文件(Precompiled Header)是一种 C++编译技术,用于提高编译速度。预编译头文件包含了一些常用的头文件和预处理指令,编译器可以将其预先编译成二进制形式,然后在实际编译源文件时直接使用,从而减少编译时间。
引入
本小段将通过使用预编译头文件和不使用预编译头文件的编译速度进行计时,直观展现前者对编译速度的显著提升。
初始情况
减少一行输出流语句,不使用预编译头文件在源文件发生变化时的编译性能
减少一行输出流语句,使用预编译头文件在源文件发生变化时的编译性能
观察与结论
- 通VC的工具–》选项–》VC++项目设置,开启生成计时器
- 不使用预编译头文件,源文件发生变化时,重新编译耗时1058ms
- 使用预编译头文件,源文件发生相同变化,重新编译耗时523ms
在大型项目中,将常用的头文件写入预编译头文件可以减少50%左右的编译时间,编译性能大幅优化。
代码:
main.cpp
项目的主源文件,包含了主函数 int main()。在这个文件中,通过 #include “pch.h” 包含了预编译头文件"pch.h",以便在主函数中使用预编译头文件中定义的内容。在主函数中输出了 “Hello World!”。
#include "pch.h"
int main()
{
std::cout << "Hello World!" << std::endl;
}
pch.cpp
与预编译头文件 “pch.h” 对应的源文件,其目的是为了在编译过程中生成预编译头文件 “pch.h” 的二进制文件。在这个文件中,也通过 #include “pch.h” 包含了预编译头文件 “pch.h”。
#include "pch.h"
pch.h
预编译头文件,包含了一系列常用的标准库头文件、数据结构的头文件、Windows API 的头文件等。在这个文件中定义