Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта страница применяется только к разработчикам, у которых есть конкретные причины замены препроцессора Microsoft C/C++ в качестве препроцессора, используемого MIDL, или для разработчиков, которые должны указывать настраиваемые коммутаторы препроцессора. Параметр MIDL переключает /cpp_cmd, /cpp_optи /no_cpp используется для переопределения поведения компилятора по умолчанию. Обычно нет причин замены препроцессора Microsoft C/C++ или указания настраиваемых коммутаторов препроцессора.
Компилятор MIDL использует препроцессор C во время начальной обработки IDL-файла. Среда сборки, используемая при компиляции файлов IDL, связана с препроцессором C/C++ по умолчанию. Если используется другой препроцессор, переключатель компилятора MIDL /cpp_cmd включает переопределение имени препроцессора по умолчанию C/C++:
midl /cpp_cmd preprocessor_name filename
-
preprocessor_name
-
Указывает имя препроцессора, используемого MIDL. Может быть указан путь к двоичному файлу. Расширение .exe является необязательным.
-
имя файла
-
Указывает имя IDL-файла.
- Компилятор MIDL ожидает, что любой препроцессор будет соблюдать следующие соглашения:
- Входной файл указывается в качестве последнего аргумента в командной строке.
- Препроцессор должен перенаправить выходные данные на стандартное выходное устройство, stdout.
- В выходном потоке препроцессора директивы #line присутствуют, чтобы обеспечить лучшие диагностические сообщения.
- Директивы строки являются единственными директивами препроцессора в выходном потоке.
MIDL предполагает, что непреднамерованный препроцессор удалил все директивы препроцессора из входного потока компилятора, за исключением вхождения директивы строки, необходимой для определения расположения источника в сообщениях компилятора. При указании препроцессора, отличного от препроцессора Microsoft C/C++ или при указании параметров препроцессора с параметром /cpp_opt, необходимо указать соответствующий параметр препроцессора, который помещает директивы строки в входной поток компилятора. Например, для препроцессора Microsoft C/C++ необходимо использовать параметр /E:
midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl
Директива #line принимается MIDL в одной из следующих форм:
#line digit-sequence "filename" new-line
# digit-sequence "filename" new-line
Полное описание директивы line и других директив препроцессора см. в документации по используемому компилятору C.
MIDL принимает только директиву препроцессора строки. Таким образом, если используется параметр /no_cpp, входной файл не должен иметь другие директивы препроцессора или входной файл должен быть обработан перед вызовом MIDL.
Дополнительные сведения см. в разделе Работе с #defines в файлах IDL.