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


Правила целостности для параметров компилятора /Yc и /Yu

Обновлен: Ноябрь 2007

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

Правила целостности для параметров компилятора

В следующей таблице приведены параметры компилятора, которые могут вызвать предупреждение о нарушении целостности при использовании предкомпилированного заголовка.

Параметр

Имя

Правило

/D

Определяет константы и макросы

Должен быть одним и тем же в компиляции, при которой был создан предкомпилированный заголовок, и в текущей компиляции. Состояние определенных констант не проверяется, но если файлы зависят от значений измененных констант, то результаты могут быть непредсказуемы.

/E или /EP

Копирует выходные данные препроцессора в стандартный вывод

Предкомпилированные заголовки не работают с параметрами /E и /EP.

/Fr или /FR

Создает данные для обозревателя исходного кода Майкрософт

Параметры /Fr и /FR можно использовать с параметром /Yu только в том случае, если они использовались во время создания предкомпилированного заголовка. Последующие компиляции, в которых используется предкомпилированный заголовок, также создают данные для обозревателя исходного кода. Данные обозревателя помещаются в единый SBR-файл, после чего другие файлы могут ссылаться на них точно так же, как на данные CodeView. Расположение данных обозревателя исходного кода переопределять нельзя.

/GA, /GD, /GE, /Gw или /GW

Параметры протокола Windows

Должны быть одними и теми же в компиляции, при которой был создан предкомпилированный заголовок, и в текущей компиляции. Если эти параметры различаются, будет выдано предупреждение.

/Zi

Создает полную отладочную информацию

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

21khx4ke.alert_note(ru-ru,VS.90).gifПримечание.

Функция предкомпиляции заголовков предназначена для использования только с исходными файлами на языках C и C++.

Правила целостности для пути включаемых файлов

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

Правила целостности для исходных файлов

При использовании предкомпилированного заголовка компилятор пропускает все директивы препроцессора (включая прагма-директивы), заданные до прагма-директивы hdrstop. Компиляция, описываемая подобными директивами препроцессора, должна совпадать с компиляцией, использованной для создания файла предкомпилированного заголовка.

Правила целостности для прагма-директив

Прагма-директивы, обработанные при компиляции предкомпилированного заголовка, обычно воздействуют на файл, в котором этот заголовок затем используется. Приведенные далее прагма-директивы воздействуют только на код в PCH-файле, и не влияют на код, в котором впоследствии будет использован этот PCH-файл:

Comment

page

subtitle

Linesize

pagesize

Title

Message

skip

 

Приведенные далее прагма-директивы остаются в составе предкомпилированного заголовка и воздействуют на оставшуюся часть компиляции, в которой используется этот заголовок:

alloc_text

function

optimize

auto_inline

inline_depth

Pack

check_pointer

inline_recursion

same_seg

check_stack

intrinsic

warning

code_seg

loop_opt

 

data_seg

native_caller

 

См. также

Ссылки

Правила согласованности предкомпилированных заголовков

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

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