Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här sidan gäller endast för utvecklare som har särskilda skäl att ersätta Microsoft C/C++-förprocessorn som den förprocessor som används av MIDL, eller för utvecklare som måste ange anpassade växlar för förprocessorer. MIDL-växlarna /cpp_cmd, /cpp_optoch /no_cpp används för att åsidosätta kompilatorns standardbeteende. Det finns vanligtvis ingen anledning att ersätta Microsoft C/C++-förprocessorn eller att ange anpassade förprocessorväxlar.
MIDL-kompilatorn använder en C-förprocessor under den första bearbetningen av IDL-filen. Den byggmiljö som används vid kompilering av IDL-filerna är associerad med en C/C++-standardpreprocessor. Om en annan förprocessor ska användas aktiverar MIDL-kompilatorväxeln /cpp_cmd en åsidosättning av standardnamnet C/C++-preprocessor:
midl /cpp_cmd preprocessor_name filename
-
preprocessor_name
-
Anger namnet på den förprocessor som ska användas av MIDL. Kan anges med en sökväg till binärfilen. Tillägget .exe är valfritt.
-
filnamn
-
Anger namnet på IDL-filen.
- MIDL-kompilatorn förväntar sig att alla förprocessorer följer följande konventioner:
- Indatafilen anges som det sista argumentet på kommandoraden.
- Förprocessorn måste omdirigera utdata till standardutdataenheten stdout.
- I utdataströmmen för förprocessorn finns de #line direktiven för att möjliggöra bättre diagnostikmeddelanden.
- Linjedirektiven är de enda förprocessordirektiven i utdataströmmen.
MIDL förutsätter att den skapade förprocessorn har tagit bort alla förprocessordirektiv från kompilatorns indataström, med undantag för de förekomster av linjedirektivet som krävs för att hitta källplatsen i kompilatormeddelanden. När du anger en förprocessor som skiljer sig från Microsoft C/C++-förprocessorn, eller när du anger förprocessoralternativ med växeln /cpp_opt, måste du ange ett lämpligt förprocessoralternativ som placerar linjedirektiven i kompilatorns indataström. För Microsoft C/C++-förprocessorn måste till exempel alternativet /E användas:
midl /cpp_cmd cl.exe /cpp_opt "/E" file.idl
Det #line direktivet godkänns av MIDL i något av följande formulär:
#line digit-sequence "filename" new-line
# digit-sequence "filename" new-line
En fullständig beskrivning av linjedirektivet och andra förprocessordirektiv finns i dokumentationen för C-kompilatorn som används.
MIDL accepterar endast linjeförprocessordirektivet. Om växeln /no_cpp används får indatafilen därför inte ha andra förprocessordirektiv, eller så måste indatafilen ha bearbetats innan MIDL anropas.
Mer information finns i Hantera #defines i IDL Files.