预编译头到底是什么?它们什么时候使用?
最佳答案
预编译头是编译过程中使用的优化。
基本上,如果你编译类似 stdio.h
的东西使用完全相同的定义和环境,您可以放心地假设每次结果都相同。
因此,编译器会记住该 header 的“已编译”版本,因此不必再次执行此操作。
实际上,如果您的每个源文件都以以下开头,则往往是最初的一组 header 产生差异:
#define XYZZY 42
#include <stdio.h>
#include <stdlib.h>
第一个完全编译但记住紧跟在第三行之后的状态。下一个可以简单地完全丢弃这三行并在继续编译文件的其余部分之前加载保存的状态。
我第一次看到这个功能是在 Windows 上,它的巨大
windows.h
头文件,相信我,它对整体构建时间产生了很大影响。
关于precompiled-headers - 预编译头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954167/