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


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

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

Синтаксис

/Yu[имя_файла]

Аргументы

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

Замечания

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

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

Файл .pch должен быть создан с помощью /Yc.

Компилятор обрабатывает весь код, происходящий до H-файла, как предварительно компилированный. Он пропускает только после директивы, связанной #include с .h файлом, использует код, содержащийся в .pch файле, а затем компилирует весь код после имени файла.

В командной строке пробел не допускается между /Yu именем файла и именем файла.

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

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

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

Так как .pch файлы содержат сведения об среде компьютера и адресе памяти о программе, следует использовать .pch только файл на компьютере, где он был создан.

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

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

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

  2. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  3. Выберите страницу свойств>конфигурации C/C++>Precompiled Headers.

  4. Измените свойство предкомпилированного заголовка , свойство Create/Use PCH Through File или Create/Use Precompiled Header .

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

Пример

Если следующий код:

#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, компилятор не обрабатывает три инструкции include. Вместо этого он использует предварительно скомпилированный код, MYAPP.pchкоторый экономит время, связанное с предварительной обработкой всех трех файлов (и всех файлов, которые они могут включать).

Можно использовать /Fp (Name .pch file) параметр с /Yu параметром, чтобы указать имя файла, если имя .pch отличается от аргумента /Yc имени файла или базового имени исходного файла, как показано в следующем примере:

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

Эта команда задает предварительно скомпилированный файл заголовка с именем MYPCH.pch. Компилятор использует его содержимое для восстановления предварительно скомпилированного состояния всех файлов заголовков вплоть до и в том числе MYAPP.h. Затем компилятор компилирует код, который возникает после #include "MYAPP.h"директивы *.

См. также

Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC