二十一、C++预编译头文件、基准测试benchmark
1、C++预编译头文件
预编译头文件(Precompiled Headers, PCH)对大型项目来说非常重要。
我们现在已经知道,开发一个项目,里面会有多个.cpp文件,编译这个项目时,先是对每个.cpp文件进行预处理,然后再编译,最后是将这多个文件合并成一个.exe文件。
我们知道我们开发的每个.cpp文件开头都会include很多头文件。当这个.cpp文件被预处理时,预处理器就会把所有的include语句替换成对应文件的全部内容,然后才进行编译、链接。
而替换后的源文件就已经是个庞然大物了。如果我们的项目非常大,那替换后的源文件就更大了。所以此时一般都会面临着编译一次要用很长的时间。如果此时源文件再有一点点改动,就不得不对整个文件进行重新编译。时间成本非常高。预编译头文件就可以帮我们节省大量时间。
预编译头文件就是让我们提前先整理出一些头文件,比如C++库、标准模板库、windows api类的、这些几乎永远不会改变的、而且几乎都要用到的东西,都放到一个单独的头文件中(通常命名为pch.h或类似名称),然后让编译器提前我这些头文件编译成一个二进制文件(编译器通常默认的是生成.pch或.gch格式的),以二进制格