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.