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.