Requisitos do pré-processador C para MIDL

Esta página se aplica somente aos desenvolvedores que têm motivos específicos para substituir o pré-processador do Microsoft C/C++ como o pré-processador usado pelo MIDL ou aos desenvolvedores que devem especificar opções de pré-processador personalizadas. As opções MIDL /cpp_cmd, /cpp_opt e /no_cpp são usadas para substituir o comportamento padrão do compilador. Normalmente, não há motivo para substituir o pré-processador do Microsoft C/C++ nem especificar opções de pré-processador personalizadas.

O compilador MIDL usa um pré-processador C durante o processamento inicial do arquivo IDL. O ambiente de build 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 /cpp_cmd do compilador MIDL habilitará uma substituição do nome padrão do C/C++-preprocessor:

midl /cpp_cmd preprocessor_name filename

preprocessor_name

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

filename

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 habilitar melhores mensagens de diagnóstico.
  • As diretivas de linha são as únicas diretivas de pré-processador no fluxo de saída.

MIDL pressupõe que o pré-processador gerado removeu todas as diretivas de 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 em mensagens do compilador. Ao indicar um pré-processador diferente do pré-processador do Microsoft C/C++ ou ao especificar opções de pré-processador com a opção /cpp_opt , é necessário especificar uma opção de pré-processador apropriada que coloca as diretivas de linha no fluxo de entrada do compilador. Por exemplo, para o pré-processador do Microsoft C/C++, a opção /E teria que ser usada:

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

A diretiva #line é aceita pela MIDL em 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.

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

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