Что такое предварительно скомпилированные заголовки?
Часто исходные файлы C ++ включают заголовки из внешних библиотек. В Windows вы включаете windows.h
. Эти файлы заголовков могут быть очень большими, и для их обработки требуется некоторое время. Каждый раз, когда вы компилируете файл C ++, компилятор должен читать и обрабатывать тысячи строк из этих файлов заголовков. Но внешние библиотеки не меняются, и вы можете сэкономить много времени, если обработаете эти файлы только один раз и сохраните результат.
Предварительно скомпилированный заголовок - это просто набор файлов заголовков, которые были обработаны до промежуточной формы, которая позже может использоваться компилятором снова и снова.
Предварительно скомпилированные заголовки в Visual C ++
В Visual C ++ принято #include
все неизменяемые файлы заголовков в stdafx.h
. Затем вы инструктируете компилятор создать предварительно скомпилированный заголовок stdafx.pch
при компиляции stdafx.cpp
, который ничего не делает, кроме включения stdafx.h
. Если вы хотите использовать предварительно скомпилированный заголовок в другом .cpp
файле, вы должны включить stdafx.h
в качестве первого включаемого файла и указать компилятору использовать stdafx.pch
для вашего предварительно скомпилированного заголовка.
Если вы получите сообщение об отсутствии stdafx.h
, вам просто нужно указать компилятору не использовать предварительно скомпилированный заголовок для этого конкретного исходного файла. (Или вы можете включить stdafx.h
.)
Настройки предварительно скомпилированного заголовка для отдельных исходных файлов
Visual C ++ позволяет управлять настройками компилятора как для всего проекта, так и для отдельных файлов. Чтобы получить доступ к отдельным свойствам, выберите исходный файл в проводнике решений, щелкните его правой кнопкой мыши и выберите Свойства в контекстном меню. Параметры для предварительно скомпилированных заголовков находятся в Свойства конфигурации => C / C ++ => Предварительно скомпилированные заголовки. Если вы изменяете эти настройки, вам часто нужно делать это для всех конфигураций (например, Debug и Release).
Когда вы используете предварительно скомпилированные заголовки, у вас будет параметр для всего проекта, который инструктирует компилятор использовать stdafx.pch
для предварительно скомпилированного заголовка. stdafx.cpp
будет иметь индивидуальные настройки, которые инструктируют компилятор генерировать stdafx.pch
, и если у вас есть некоторые исходные файлы, которые не включают stdafx.h
, вы можете установить для них индивидуальные настройки, чтобы не использовать предварительно скомпилированные заголовки.
person
Martin Liversage
schedule
18.08.2009