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


Правила целостности для пофайлового использования предкомпилированных заголовков

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

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

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

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

  • Макросы, созданные с использованием параметра препроцессора (/D), должны быть одинаковы для компиляции, при которой был создан предкомпилированный заголовок, и текущей компиляции. Состояние определенных констант не проверяется, однако их изменение может привести к непредвиденным результатам.

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

  • При создании предкомпилированных заголовков должен использоваться либо параметр "Создавать сведения для обозревателя" (/FR), либо параметр "Исключить локальные переменные" (/Fr), чтобы при последующих компиляциях с использованием предкомпилированного заголовка эти параметры могли использоваться.

Совместимость с C 7.0 (/Z7)

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

Если параметр "Совместимость с C 7.0" (/Z7) выключен при создании предкомпилированного заголовка, при последующих компиляциях с использованием предкомпилированного заголовка и параметра /Z7 появится предупреждение. Отладочная информация помещается в текущий OBJ-файл, и локальные символы, определенные в предкомпилированном заголовке, недоступны отладчику.

Согласованность путей включения

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

Согласованность исходных файлов

При указании параметра "Использовать файл предкомпилированного заголовка" (/Yu) компилятор игнорирует все директивы препроцессора, включая директивы pragma, имеющиеся в исходном коде, подлежащем предварительной компиляции. Компиляция, выполняемая при указании таких директив препроцессора, не должна отличаться от компиляции с использованием параметра "Создавать файл предкомпилированного заголовка" (/Yc).

Согласованность прагм

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

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

alloc_text

include_alias

pack

auto_inline

init_seg

pointers_to_members

check_stack

inline_depth

setlocale

code_seg

inline_recursion

vtordisp

data_seg

intrinsic

warning

function

optimize

 

См. также

Ссылки

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

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

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