Предварительно скомпилированные заголовки - это оптимизация, используемая в процессе компиляции.
По сути, если вы компилируете что-то вроде stdio.h
с точно такими же определениями и средой, вы можете смело предполагать, что результат будет одинаковым каждый раз.
Таким образом, компилятор запоминает «скомпилированную» версию этого заголовка, поэтому он не должен делать это снова.
На самом деле, это имеет тенденцию быть начальной группой заголовков, которая делаетразница в том, что если каждый из ваших исходных файлов начинается с:
#define XYZZY 42
#include <stdio.h>
#include <stdlib.h>
, первый компилируется полностью, но запоминает состояние сразу после этой третьей строки.Следующий может просто полностью выбросить эти три строки и загрузить сохраненное состояние перед продолжением компиляции остальной части файла.
Впервые я увидел эту функцию в Windows с ее массивным *Заголовочный файл 1014 * windows.h
и, поверьте мне, это сильно повлияло на общее время сборки.