/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
Укажите для CPP-файла в проекте параметр /Yc (создать предварительно скомпилированный заголовочный файл).
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.
Откройте папку C/C++.
Щелкните страницу свойств Предкомпилированные заголовки.
Измените свойство Создание/использование PCH-файла до файла включительно или Создание/использование предкомпилированного заголовка.
Установка данного параметра компилятора программным способом
- См. разделы PrecompiledHeaderThrough и UsePrecompiledHeader.
Примеры
Если код
#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.