Поделиться через


/Yu (использование файла предкомпилированного заголовка)

Предписывает компилятору использование существующего предварительно скомпилированного заголовочного файла (.pch) в текущей компиляции.

/Yu[filename]

Аргументы

  • filename
    Имя файла заголовка, включаемого в исходный файл с помощью директивы препроцессора #include.

Заметки

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

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

PCH-файл должен создаваться с помощью параметра /Yc.

Компилятор рассматривает весь код, стоящий до H-файла, как предкомпилированный. Он сразу переходит к коду, непосредственно следующему за директивой #include, связанной с H-файлом, использует код из PCH-файла, после чего компилирует весь код, стоящий после filename.

Между параметром /Yu и именем filename в командной строке не должно быть пробелов.

При задании параметра /Yu без имени файла исходная программа должна содержать директиву #pragma hdrstop, которая служит для задания имени файла предкомпилированного заголовка, то есть PCH-файла. В этом случае компилятор использует предкомпилированный заголовок (PCH-файл), заданный с помощью параметра /Fp (имя PCH-файла). Компилятор переходит к месту расположения директивы pragma, восстанавливает состояние компиляции из файла предкомпилированного заголовка, указанного в директиве pragma, после чего компилирует тот код, который следует за директивой pragma. Если в директиве #pragma hdrstop не указано имя файла, то компилятор ищет файл с именем, состоящим из базового имени исходного файла и расширения PCH. Для указания другого PCH-файла также можно использовать параметр /Fp.

Если в параметре /Yu не указано имя файла, а директива pragma hdrstop отсутствует, то создается сообщение об ошибке и компиляция прерывается.

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

Поскольку PCH-файл содержат сведения о машинной среде и адресах памяти программ, их следует использовать только на тех машинах, где они создавались.

Дополнительные сведения о предкомпилированных заголовках см. в разделах:

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Укажите для CPP-файла в проекте параметр /Yc (создать предварительно скомпилированный заголовочный файл).

  2. Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.

  3. Откройте папку C/C++.

  4. Щелкните страницу свойств Предкомпилированные заголовки.

  5. Измените свойство Создание/использование PCH-файла до файла включительно или Создание/использование предкомпилированного заголовка.

Установка данного параметра компилятора программным способом

Примеры

Если код

#include <afxwin.h>   // Include header for class library
#include "resource.h" // Include resource definitions
#include "myapp.h"    // Include information specific to this app
...

компилируется с помощью команды CL /YuMYAPP.H PROG.CPP, то компилятор не обрабатывает три оператора включения, а использует предкомпилированный код из файла MYAPP.pch, тем самым экономя время, которое бы ушло на предварительную обработку этих трех файлов (и всех файлов, включенных в них).

Для указания имени PCH-файла, отличного от аргумента параметра /Yc и базового имени исходного файла, вместе с параметром /Yu следует использовать параметр /Fp (имя PCH-файла), например:

CL /YuMYAPP.H /FpMYPCH.pch PROG.CPP

В этой команде указан файл предкомпилированного заголовка с именем MYPCH.pch. Компилятор использует его содержимое, чтобы восстановить предкомпилированное состояние всех файлов заголовка вплоть до MYAPP.h включительно. После этого компилятор компилирует код, стоящий после оператора include, включающего файл MYAPP.h.

См. также

Ссылки

Параметры компилятора

Настройка параметров компилятора