/Yd (размещение отладочной информации в объектном файле)

Темпы завершения отладки во всех файлах объектов, созданных из предварительно скомпилированного файла заголовка (PCH) при использовании с параметрами /Yc и /Z7 . Устарело.

Синтаксис

/Yd

Замечания

/Yd не рекомендуется; Visual C++ теперь поддерживает запись нескольких объектов в один PDB-файл, вместо этого используйте /Zi . Список устаревших параметров компилятора см. в разделе "Устаревшие" и "Удаленные параметры компилятора" в параметрах компилятора, перечисленных по категориям.

Если вам не нужно распространять библиотеку, содержащую сведения об отладке, используйте параметр /Zi , а не /Z7 и /Yd.

Хранение полных сведений об отладке в каждом OBJ-файле необходимо только для распространения библиотек, содержащих сведения об отладке. Он замедляет компиляцию и требует значительного места на диске. При использовании /Yc и /Z7 без /Yd компилятор сохраняет общие сведения об отладке в первом OBJ-файле, созданном из PCH-файла. Компилятор не вставляет эти сведения в OBJ-файлы, которые впоследствии создаются из PCH-файла; он вставляет перекрестные ссылки на информацию. Независимо от того, сколько OBJ-файлов использует PCH-файл, только один OBJ-файл содержит общие сведения об отладке.

Хотя это поведение по умолчанию приводит к более быстрому времени сборки и снижению спроса на место на диске, нежелательно, если небольшое изменение требует перестроения OBJ-файла, содержащего общие сведения об отладке. В этом случае компилятор должен перестроить все OBJ-файлы, содержащие перекрестные ссылки на исходный OBJ-файл. Кроме того, если общий PCH-файл используется различными проектами, зависимость от перекрестных ссылок на один OBJ-файл трудно.

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

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

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

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Введите параметр компилятора в поле "Дополнительные параметры ".

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

Примеры

Предположим, у вас есть два базовых файла, F.cpp и G.cpp, каждая из которых содержит эти #include операторы:

#include "windows.h"
#include "etc.h"

Следующая команда создает предварительно скомпилированный файл заголовка ETC.pch и файл объекта F.obj:

CL /YcETC.H /Z7 F.CPP

Файл объекта F.obj содержит сведения о типе и символах для WINDOWS.h и ETC.h (и других файлов заголовков, которые они включают). Теперь можно использовать предварительно скомпилированные заголовки ETC.pch для компиляции исходного файла G.cpp:

CL /YuETC.H /Z7 G.CPP

Файл объекта G.obj не содержит сведения об отладке для предварительно скомпилированного заголовка, а просто ссылается на эти сведения в F.obj-файле. Обратите внимание, что необходимо связаться с файлом F.obj.

Если предварительно скомпилированный заголовок не компилировался с помощью /Z7, его можно использовать в последующих компиляциях с помощью /Z7. Однако сведения об отладке помещаются в текущий файл объекта, а локальные символы функций и типов, определенных в предварительно скомпилированных заголовках, недоступны для отладчика.

См. также

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