PCH是Precompiled Header(预编译头文件)的缩写,是Microsoft Visual C++中的一项功能,它是一种可以预先编译过的头文件,包含了程序的通用头文件和其他常用头文件的内容。PCH可以加快程序的编译速度,减小目标文件的大小。
通过PCH,编译器可以直接使用已经编译过的头文件的信息。当编译一个C或C++源文件时,编译器会首先读入该源文件所包含的头文件,将其进行编译处理,最终将所有源文件和处理后的头文件链接成一个可执行文件。
当一个源文件需要包含大量头文件时,会导致编译速度非常缓慢。使用PCH可以把这些通用的头文件预先编译成二进制文件,以后再编译源文件时,只需要调用PCH这个二进制文件即可。这样就可以极大地加快编译速度,提高开发效率。PCH也可以减少目标文件的大小,因为已经编译过的头文件只需要在程序链接期间处理一次。
PCH并不是万能的,它适用于那些比较稳定的、经常使用的头文件。如果程序使用的头文件太多,PCH反而会增加编译时间。此外,由于PCH只适用于MSVC编译器,使用GCC等其他编译器时需要特别注意。
在使用PCH之前,必须先定义宏,以便编译器在使用时能够识别。这个宏定义是在源文件中实现的,通常是将此语句放在源文件的最上面:
#include "stdafx.h"
然后,在Visual Studio中,可以通过属性页面来开启PCH功能。
使用PCH需要注意以下几点: