Введение

Поддержка прекомпилированных заголовочных файлов реализована для компиляторов Visual C++ (v.6.0) и Borland C++ (v.5.5.1) на платформе Win32. На остальных платформах и для других компиляторов значения переменных pchHeaderFile, pchCppFile игнорируются.

В различных компиляторах работа с прекомпилированными заголовочными файлами несколько отличается. Реализованный в шаблоне для C++ подход ориентирован в первую очередь на Visual C++.

Visual C++ и precompiled headers

Компилятор Visual C++ требует, чтобы в проекте был один "главный" заголовочный файл и один "вспомогательный" C++ файл. Главный заголовочный файл подгружает все основные заголовочные файлы проекта. Вспомогательный C++ файл содержит только загрузку главного заголовочного файла.

При компиляции вспомогательного C++ файла нужно указать опцию компилятора "/Yc". В этой опции указывается имя главного заголовочного файла. Имея эту опцию при компиляции вспомогательного файла компилятор создает pch-файл, в который попадает все, что было загружено в главном заголовочном файле.

При компиляции остальных файлов проекта нужно указать опцию компилятора "/Yu" с именем главного заголовочного файла. Имея эту опцию компилятор вместо загрузки главного заголовочного файла загружает и использует pch-файл. Если файл компилируется с опцией /Yu, то первой инструкцией #include должна быть инструкция загрузки главного заголовочного файла (в противном случае компиляция файла закончится с ошибкой).

При работе в среде Visual Studio wizard-ы проектов автоматически создают главный заголовочный файл "stdafx.h" и вспомогательный C++ файл stdafx.cpp.

Borland C++ и precompiled headers

Компилятор Borland C++ поступает аналогично компилятору Visual C++ за исключением того, что при компиляции любого из файлов проекта указывается одна и та же опция компилятора (-H или -Hh). При этом компилятор сам определяет нужно ли генерировать файл прекомпилированных заголовков или он уже сгенерирован и его можно использовать. Т.е. для компилятора не нужно создавать выделеного "вспомогательного" C++, единственной задачей которого является подключение "главного" заголовочного файла.

Реализация работы с precompiled headers в Mxx4

Hosted by uCoz