Предварительно скомпилированные заголовки - PullRequest
7 голосов
/ 10 февраля 2011

Что такое предварительно скомпилированные заголовки?когда они используются?

1 Ответ

7 голосов
/ 10 февраля 2011

Предварительно скомпилированные заголовки - это оптимизация, используемая в процессе компиляции.

По сути, если вы компилируете что-то вроде stdio.h с точно такими же определениями и средой, вы можете смело предполагать, что результат будет одинаковым каждый раз.

Таким образом, компилятор запоминает «скомпилированную» версию этого заголовка, поэтому он не должен делать это снова.

На самом деле, это имеет тенденцию быть начальной группой заголовков, которая делаетразница в том, что если каждый из ваших исходных файлов начинается с:

#define XYZZY 42
#include <stdio.h>
#include <stdlib.h>

, первый компилируется полностью, но запоминает состояние сразу после этой третьей строки.Следующий может просто полностью выбросить эти три строки и загрузить сохраненное состояние перед продолжением компиляции остальной части файла.

Впервые я увидел эту функцию в Windows с ее массивным *Заголовочный файл 1014 * windows.h и, поверьте мне, это сильно повлияло на общее время сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...