hdrstop
Предоставляет дополнительный контроль над именами файлов предварительной компиляции и расположении сохранения состояния компиляции.
#pragma hdrstop [( "filename" )]
Заметки
Аргумент filename — это имя предкомпилированного файла заголовка, которое необходимо использовать или создать (в зависимости от заданного параметра — /Yu или /Yc). Если аргумент filename не содержит спецификацию пути, предкомпилированный файл заголовка предположительно находится в том же каталоге, что и файл исходного кода.
Если файл C или C++ содержит директиву pragma hdrstop при компиляции с параметром /Yc, компилятор сохраняет состояние компиляции до расположения этой директивы. Скомпилированное состояние любого кода, следующего за директивой pragma, не сохраняется.
Используйте filename для именования предкомпилированного файла заголовка, в котором сохраняется компилированное состояние. Пробел между аргументами hdrstop и filename является необязательным. Имя файла, указанное в директиве pragma hdrstop, является строкой и, следовательно, в отношении него действуют те же ограничения, что и для любой другой строки C или С++. В частности следует заключать его в кавычки и использовать escape-символ (обратную косую черту) для задания имен каталогов. Например:
#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )
Имя предкомпилированного файла заголовка определяется в соответствии со следующим правилам в порядке приоритета.
Аргумент параметра компилятора /Fp
Аргумент filename для директивы #pragma hdrstop
Базовое имя файла исходного кода с расширением .PCH
Если ни один из двух параметров компиляции, ни директива pragma hdrstop не задает имя файла, базовое имя файла исходного кода используется для параметров /Yc и /Yu в качестве базового имени предкомпилированного файла заголовка.
Команды предварительной обработки также можно использовать для выполнения замены макроса.
#define INCLUDE_PATH "c:\\progra~`1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )
Следующие правила определяют местоположение директивы pragma hdrstop :
Она должна находится за пределами любых объявлений или определений данных или функций.
Она должна задаваться в файле исходного кода, а не заголовка.
Пример
#include <windows.h> // Include several files
#include "myhdr.h"
__inline Disp( char *szToDisplay ) // Define an inline function
{
... // Some code to display string
}
#pragma hdrstop
В этом примере директива pragma hdrstop отображается после включения двух файлов и определения встроенной функции. Поначалу такое расположение директивы pragma может показаться странным. Однако необходимо помнить, что при использовании параметров предварительной компиляции вручную (/Yc и /Yu) с директивой pragma hdrstop позволяет выполнять предварительную компиляцию файлов исходного кода целиком, включая встроенный код. Компилятор Microsoft не ограничивает предварительную компиляцию только объявлениями данных.