pragma (atributo)
La directiva #pragma midl_echo indica a MIDL que emita la cadena especificada, sin los caracteres de comillas, en el archivo de encabezado generado.
#pragma midl_echo("string")
#pragma token-sequence
#pragma pack (n)
#pragma pack ( [push] [, id] [, n} )
#pragma pack ( [pop] [, id] [, n} )
-
string
-
Especifica una cadena que se inserta en el archivo de encabezado generado. Las comillas se quitan durante el proceso de inserción.
-
secuencia de tokens
-
Especifica una secuencia de tokens que se insertan en el archivo de encabezado generado como parte de una directiva de #pragma sin procesar por el compilador MIDL.
-
n
-
Especifica el tamaño del paquete actual. Los valores válidos son 1, 2, 4, 8 y 16.
-
id
-
Especifica el identificador de usuario.
El preprocesador del compilador de C procesa las directivas de preprocesamiento del lenguaje C que aparecen en el archivo IDL. Las directivas #define del archivo IDL están disponibles durante la compilación MIDL, aunque no para el compilador de C.
Por ejemplo, cuando el preprocesador encuentra la directiva "#define WINDOWS 4", el preprocesador reemplaza todas las apariciones de "WINDOWS" en el archivo IDL por "4". El símbolo "WINDOWS" no está disponible en tiempo de compilación de C.
Para permitir que las definiciones de macros del preprocesador de C pasen a través del compilador MIDL al compilador de C, use la directiva #pragma midl_echo o cpp_quote . Estas directivas indican al compilador MIDL que genere un archivo de encabezado que contenga la cadena de parámetros con las comillas quitadas. Las directivas #pragma midl_echo y cpp_quote son equivalentes.
El compilador MIDL usa la directiva #pragma pack para controlar el empaquetado de estructuras. Reemplaza el modificador de línea de comandos /Zp . La opción pack (n) establece el tamaño del paquete actual en un valor específico: 1, 2, 4, 8 o 16. Las opciones pack (push) y pack (pop) tienen las siguientes características:
- El compilador mantiene una pila de empaquetado. Los elementos de la pila de empaquetado incluyen un tamaño de paquete y un identificador opcional. La pila solo está limitada por la memoria disponible con el tamaño del paquete actual en la parte superior de la pila.
- Pack (push) da como resultado el tamaño del paquete actual insertado en la pila de empaquetado. La pila está limitada por la memoria disponible.
- Pack (push,n) es el mismo que el paquete (inserción) seguido de pack (n).
- Pack (push, id) también inserta id en la pila de empaquetado junto con el tamaño del paquete.
- Pack (push, id, n) es el mismo que pack (push, id) seguido de pack (n).
- Empaquetar (pop) da como resultado la extracción de la pila de empaquetado. Los elementos emergentes desequilibrados provocan advertencias y establecen el tamaño del paquete actual en el valor de la línea de comandos.
- Si se especifica pack (pop, id, n), se omite n .
El compilador MIDL coloca las cadenas especificadas en las directivas \cpp_quote y pragma del archivo de encabezado en la secuencia en la que se especifican en el archivo IDL y en relación con otros componentes de interfaz del archivo IDL. Normalmente, las cadenas deben aparecer en la sección del cuerpo de la interfaz del archivo IDL después de todas las operaciones de importación .
El compilador MIDL no intenta procesar #pragma directivas que no comienzan con el prefijo "midl_". Otras directivas de #pragma del archivo IDL se pasan al archivo de encabezado generado sin cambios.
/* IDL file */
#pragma midl_echo("#define UNICODE")
cpp_quote("#define __DELAYED_PREPROCESSING__ 1")
#pragma hdrstop
#pragma check_pointer(on)
/* generated header file */
#define UNICODE
#define __DELAYED_PREPROCESSING__ 1
#pragma hdrstop
#pragma check_pointer(on)