atributo pragma
A diretiva #pragma midl_echo instrui MIDL a emitir a cadeia de caracteres especificada, sem os caracteres de aspas, no arquivo de cabeçalho gerado.
#pragma midl_echo("string")
#pragma token-sequence
#pragma pack (n)
#pragma pack ( [push] [, id] [, n} )
#pragma pack ( [pop] [, id] [, n} )
-
cadeia de caracteres
-
Especifica uma cadeia de caracteres inserida no arquivo de cabeçalho gerado. As aspas são removidas durante o processo de inserção.
-
sequência de token
-
Especifica uma sequência de tokens inseridos no arquivo de cabeçalho gerado como parte de uma diretiva #pragma sem processamento pelo compilador MIDL.
-
n
-
Especifica o tamanho do pacote atual. Os valores válidos são 1, 2, 4, 8 e 16.
-
id
-
Especifica o identificador do usuário.
As diretivas de pré-processamento da linguagem C que aparecem no arquivo IDL são processadas pelo pré-processador do compilador C. As diretivas #define no arquivo IDL estão disponíveis durante a compilação MIDL, embora não para o compilador C.
Por exemplo, quando o pré-processador encontra a diretiva "#define WINDOWS 4", o pré-processador substitui todas as ocorrências de "WINDOWS" no arquivo IDL por "4". O símbolo "WINDOWS" não está disponível no momento da compilação C.
Para permitir que as definições de macro do pré-processador C passem pelo compilador MIDL para o compilador C, use a diretiva #pragma midl_echo ou cpp_quote . Essas diretivas instruem o compilador MIDL a gerar um arquivo de cabeçalho que contém a cadeia de caracteres de parâmetro com as aspas removidas. As diretivas #pragma midl_echo e cpp_quote são equivalentes.
A diretiva #pragma pack é usada pelo compilador MIDL para controlar o empacotamento de estruturas. Ele substitui a opção de linha de comando /Zp . A opção pack (n) define o tamanho do pacote atual como um valor específico: 1, 2, 4, 8 ou 16. As opções pack (push) e pack (pop) têm as seguintes características:
- O compilador mantém uma pilha de empacotamento. Os elementos da pilha de empacotamento incluem um tamanho de pacote e uma ID opcional. A pilha é limitada apenas pela memória disponível com o tamanho do pacote atual na parte superior da pilha.
- O pacote (push) resulta no tamanho do pacote atual enviado por push para a pilha de empacotamento. A pilha é limitada pela memória disponível.
- Pack (push,n) é o mesmo que pack (push) seguido por pack (n).
- O pacote (push, id) também envia a ID para a pilha de empacotamento junto com o tamanho do pacote.
- Pack (push, id, n) é o mesmo que pack (push, id) seguido pelo pacote (n).
- O pacote (pop) resulta no estouro da pilha de empacotamento. Pops desequilibrados causam avisos e definem o tamanho do pacote atual como o valor da linha de comando.
- Se o pacote (pop, id, n) for especificado, n será ignorado.
O compilador MIDL coloca as cadeias de caracteres especificadas nas diretivas \cpp_quote e pragma no arquivo de cabeçalho na sequência em que são especificadas no arquivo IDL e em relação a outros componentes de interface no arquivo IDL. As cadeias de caracteres geralmente devem aparecer na seção interface-body do arquivo IDL após todas as operações de importação .
O compilador MIDL não tenta processar diretivas de #pragma que não começam com o prefixo "midl_". Outras diretivas #pragma no arquivo IDL são passadas para o arquivo de cabeçalho gerado sem alterações.
/* 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)