我已经使用预编译头文件一段时间了,并被告知(也看到)它们可以减少编译时间。但我真的很想知道底层发生了什么,以便让我的编译更快。
因为据我所知,在.cpp中添加未使用的include会使编译时间变慢,而头文件可能包含大量未使用的头文件。
那么预编译头文件如何使我的编译更快呢?
我已经使用预编译头文件一段时间了,并被告知(也看到)它们可以减少编译时间。但我真的很想知道底层发生了什么,以便让我的编译更快。
因为据我所知,在.cpp中添加未使用的include会使编译时间变慢,而头文件可能包含大量未使用的头文件。
那么预编译头文件如何使我的编译更快呢?
来自http://gamesfromwithin.com/the-care-and-feeding-of-pre-compiled-headers,感谢(@Pablo)
C++编译器一次只能处理一个编译单元(cpp文件)。对于每个文件,它都会应用预处理器(负责处理所有包含的内容,并将其“烘焙”到cpp文件中),然后编译模块本身。继续处理下一个cpp文件,反复执行。显然,如果多个文件包含相同的一组昂贵的头文件(大型和/或包含许多其他头文件),则编译器将完成许多重复的工作。
最简单的理解预编译头文件的方法是将其视为头文件的缓存。编译器可以分析一组头文件,编译它们,然后将结果准备好供需要它们的任何模块使用。
.cpp
文件)都会编译一次头文件。使用预编译头文件可以节省重复编译包含文件所需的时间。当需要预编译的头文件非常大(或间接包含许多其他头文件)时,这真的很有益处。