Sdílet prostřednictvím


Požadavky preprocesoru jazyka C pro MIDL

Tato stránka se vztahuje pouze na vývojáře, kteří mají konkrétní důvody k nahrazení preprocesoru Microsoft C/C++ jako preprocesoru používaného funkcí MIDL nebo pro vývojáře, kteří musí určit přizpůsobené přepínače preprocesoru. Funkce MIDL přepne /cpp_cmd, /cpp_opta /no_cpp k přepsání výchozího chování kompilátoru. Obvykle není důvod nahradit preprocesor jazyka Microsoft C/C++ ani určit přizpůsobené přepínače preprocesoru.

Kompilátor MIDL používá preprocesor jazyka C během počátečního zpracování souboru IDL. Prostředí sestavení použité při kompilaci souborů IDL je přidruženo k výchozímu preprocesoru C/C++. Pokud se má použít jiný preprocesor, přepínač kompilátoru MIDL /cpp_cmd povolí přepsání výchozího názvu preprocesoru C/C++:

midl /cpp_cmd preprocessor_name filename

preprocessor_name

Určuje název preprocesoru, který se má použít v MIDL. Lze zadat cestu k binárnímu souboru. Rozšíření .exe je volitelné.

název souboru

Určuje název souboru IDL.

  • Kompilátor MIDL očekává, že jakýkoli preprocesor bude dodržovat následující konvence:
  • Vstupní soubor je zadán jako poslední argument na příkazovém řádku.
  • Preprocesor musí přesměrovat výstup na standardní výstupní zařízení stdout.
  • Ve výstupním datovém proudu preprocesoru jsou k dispozici direktivy #line, které umožňují lepší diagnostické zprávy.
  • Direktivy řádku jsou jedinými direktivami preprocesoru ve výstupním datovém proudu.

MIDL předpokládá, že vytvářený preprocesor odebral všechny direktivy preprocesoru ze vstupního datového proudu kompilátoru, s výjimkou výskytů direktivy řádku nezbytné pro určení zdrojového umístění ve zprávách kompilátoru. Při indikování preprocesoru jiného než preprocesoru jazyka C/C++ nebo při zadávání možností preprocesoru pomocí přepínače /cpp_opt je vyžadována možnost odpovídajícího preprocesoru, která vkládá direktivy řádku do vstupního datového proudu kompilátoru. Například u preprocesoru JazykA C/C++ by se měla použít možnost /E:

midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl

MidL přijímá direktivu #line v jedné z následujících forem:

#line digit-sequence "filename" new-line
 
# digit-sequence "filename" new-line

Úplný popis direktivy řádku a dalších direktiv preprocesoru najdete v dokumentaci k použitému kompilátoru jazyka C.

MIDL přijímá pouze direktivu preprocesoru řádku. Proto pokud je použit přepínač /no_cpp, vstupní soubor nesmí obsahovat jiné direktivy preprocesoru nebo vstupní soubor musí být zpracován před vyvoláním MIDL.

Další informace naleznete v tématu Práce s #defines v souborech IDL.