Partilhar via


Requisitos do pré-processador C para MIDL

Esta página aplica-se apenas a desenvolvedores que tenham motivos específicos para substituir o pré-processador Microsoft C/C++ como o pré-processador usado pelo MIDL ou a desenvolvedores que devem especificar opções de pré-processador personalizadas. As opções MIDL /cpp_cmd, /cpp_opte /no_cpp são usadas para substituir o comportamento padrão do compilador. Normalmente, não há razão para substituir o pré-processador Microsoft C/C++, nem para especificar comutadores de pré-processador personalizados.

O compilador MIDL usa um pré-processador C durante o processamento inicial do arquivo IDL. O ambiente de compilação usado ao compilar os arquivos IDL está associado a um pré-processador C/C++ padrão. Se um pré-processador diferente for usado, a opção do compilador MIDL /cpp_cmd permitirá uma substituição do nome padrão do pré-processador C/C++:

midl /cpp_cmd preprocessor_name filename

preprocessor_name

Especifica o nome do pré-processador a ser usado pelo MIDL. Pode ser especificado com um caminho para o binário. A extensão .exe é opcional.

nome do arquivo

Especifica o nome do arquivo IDL.

  • O compilador MIDL espera que qualquer pré-processador observe as seguintes convenções:
  • O arquivo de entrada é especificado como o último argumento na linha de comando.
  • O pré-processador deve redirecionar a saída para o dispositivo de saída padrão, stdout.
  • No fluxo de saída do pré-processador, as diretivas #line estão presentes para permitir melhores mensagens de diagnóstico.
  • As diretivas de linha são as únicas diretivas de pré-processador no fluxo de saída.

O MIDL assume que o pré-processador gerado removeu todas as diretivas do pré-processador do fluxo de entrada do compilador, com exceção das ocorrências da diretiva de linha necessárias para identificar o local de origem nas mensagens do compilador. Ao indicar um pré-processador diferente do pré-processador Microsoft C/C++ ou ao especificar opções de pré-processador com o switch /cpp_opt, é necessário especificar uma opção de pré-processador apropriada que coloque as diretivas de linha no fluxo de entrada do compilador. Por exemplo, para o pré-processador Microsoft C/C++, a opção /E teria de ser usada:

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

A diretiva #line é aceite pela MIDL sob uma das seguintes formas:

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

Para obter uma descrição completa da diretiva de linha e outras diretivas de pré-processador, consulte a documentação do compilador C que está sendo usado.

O MIDL aceita apenas a diretiva de pré-processador de linha. Portanto, se a opção /no_cppfor usada, o arquivo de entrada não deve ter outras diretivas de pré-processador ou o arquivo de entrada deve ter sido processado antes de invocar MIDL.

Para obter mais informações, consulte Lidando com #defines em Arquivos IDL.