Compartilhar via


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} )

Parâmetros

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.

Comentários

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.

Exemplos

/* 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)

Confira também

cpp_quote

Arquivo IDL (definição de interface)

Importação

/Zp