Compartir a través de


Requisitos del preprocesador de C para MIDL

Esta página solo se aplica a los desarrolladores que tienen razones específicas para reemplazar el preprocesador de Microsoft C/C++ como el preprocesador usado por MIDL o a los desarrolladores que deben especificar modificadores de preprocesador personalizados. Los modificadores MIDL /cpp_cmd, /cpp_opt y /no_cpp se usan para invalidar el comportamiento predeterminado del compilador. Normalmente no hay ninguna razón para reemplazar el preprocesador de Microsoft C/C++ ni para especificar modificadores de preprocesador personalizados.

El compilador MIDL usa un preprocesador de C durante el procesamiento inicial del archivo IDL. El entorno de compilación usado al compilar los archivos IDL está asociado a un preprocesador de C/C++ predeterminado. Si se va a usar otro preprocesador, el modificador del compilador MIDL /cpp_cmd habilita una invalidación del nombre predeterminado del preprocesador de C/C++:

midl /cpp_cmd preprocessor_name filename

preprocessor_name

Especifica el nombre del preprocesador que va a usar MIDL. Se puede especificar con una ruta de acceso al archivo binario. La extensión .exe es opcional.

filename

Especifica el nombre del archivo IDL.

  • El compilador MIDL espera que cualquier preprocesador observe las siguientes convenciones:
  • El archivo de entrada se especifica como el último argumento de la línea de comandos.
  • El preprocesador debe redirigir la salida al dispositivo de salida estándar, stdout.
  • En el flujo de salida del preprocesador, las directivas de #line están presentes para habilitar mejores mensajes de diagnóstico.
  • Las directivas de línea son las únicas directivas de preprocesador en el flujo de salida.

MIDL supone que el preprocesador generado ha quitado todas las directivas de preprocesador del flujo de entrada del compilador, a excepción de las apariciones de la directiva de línea necesaria para identificar la ubicación de origen en los mensajes del compilador. Al indicar un preprocesador diferente del preprocesador de Microsoft C/C++, o al especificar opciones de preprocesador con el modificador /cpp_opt , se requiere una opción de preprocesador adecuada que coloca las directivas de línea en el flujo de entrada del compilador. Por ejemplo, para el preprocesador de Microsoft C/C++, la opción /E tendría que usarse:

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

MIDL acepta la directiva #line en una de las formas siguientes:

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

Para obtener una descripción completa de la directiva de línea y otras directivas de preprocesador, consulte la documentación del compilador de C que se está usando.

MIDL solo acepta la directiva de preprocesador de línea. Por lo tanto, si se usa el modificador /no_cpp , el archivo de entrada no debe tener otras directivas de preprocesador o el archivo de entrada debe haberse procesado antes de invocar MIDL.

Para obtener más información, vea Tratar con #defines en archivos IDL.