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" )

Имя предкомпилированного файла заголовка определяется в соответствии со следующим правилам в порядке приоритета.

  1. Аргумент параметра компилятора /Fp

  2. Аргумент filename для директивы #pragma hdrstop

  3. Базовое имя файла исходного кода с расширением .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 не ограничивает предварительную компиляцию только объявлениями данных.

См. также

Ссылки

Директивы Pragma и ключевое слово __Pragma