pragma (attributo)

La direttiva #pragma midl_echo indica a MIDL di generare la stringa specificata, senza virgolette, nel file di intestazione generato.

#pragma midl_echo("string")
#pragma token-sequence
#pragma pack (n)
#pragma pack ( [push] [, id] [, n} )
#pragma pack ( [pop] [, id] [, n} )

Parametri

string

Specifica una stringa inserita nel file di intestazione generato. Le virgolette vengono rimosse durante il processo di inserimento.

sequenza di token

Specifica una sequenza di token inseriti nel file di intestazione generato come parte di una direttiva #pragma senza elaborare dal compilatore MIDL.

n

Specifica le dimensioni correnti del pacchetto. Tra i valori validi sono compresi 1, 2, 4, 8 e 16.

id

Specifica l'identificatore utente.

Commenti

Le direttive di pre-elaborazione del linguaggio C visualizzate nel file IDL vengono elaborate dal preprocessore del compilatore C. Le direttive #define nel file IDL sono disponibili durante la compilazione MIDL, anche se non al compilatore C.

Ad esempio, quando il preprocessore rileva la direttiva "#define WINDOWS 4", il preprocessore sostituisce tutte le occorrenze di "WINDOWS" nel file IDL con "4". Il simbolo "WINDOWS" non è disponibile in fase di compilazione C.

Per consentire alle definizioni di macro del preprocessore C di passare il compilatore MIDL al compilatore C, usare la direttiva #pragma midl_echo o cpp_quote . Queste direttive indicano al compilatore MIDL di generare un file di intestazione contenente la stringa di parametro con le virgolette rimosse. Le direttive #pragma midl_echo e cpp_quote sono equivalenti.

La direttiva #pragma pack viene usata dal compilatore MIDL per controllare la compressione delle strutture. Esegue l'override dell'opzione della riga di comando /Zp . L'opzione pack (n) imposta le dimensioni correnti del pacchetto su un valore specifico: 1, 2, 4, 8 o 16. Le opzioni pack (push) e pack (pop) hanno le caratteristiche seguenti:

  • Il compilatore gestisce uno stack di pacchetti. Gli elementi dello stack di imballaggio includono una dimensione del pacchetto e un ID facoltativo. Lo stack è limitato solo dalla memoria disponibile con le dimensioni correnti del pacchetto nella parte superiore dello stack.
  • Il pacchetto (push) comporta il push delle dimensioni correnti del pacchetto nello stack di imballaggio. Lo stack è limitato dalla memoria disponibile.
  • Pack (push,n) è uguale a pack (push) seguito da pack (n).
  • Pack (push, id) esegue anche il push dell'ID nello stack di imballaggio insieme alle dimensioni del pacchetto.
  • Pack (push, id, n) è lo stesso del pacchetto (push, id) seguito da pack (n).
  • Il pacchetto (pop) comporta la comparsa dello stack di imballaggio. I popup non bilanciati causano avvisi e impostano le dimensioni del pacchetto corrente sul valore della riga di comando.
  • Se il pacchetto (pop, id, n) viene specificato, n viene ignorato.

Il compilatore MIDL inserisce le stringhe specificate nelle direttive \cpp_quote e pragma nel file di intestazione nella sequenza in cui vengono specificate nel file IDL e relative ad altri componenti dell'interfaccia nel file IDL. Le stringhe devono in genere essere visualizzate nella sezione del corpo dell'interfaccia del file IDL dopo tutte le operazioni di importazione .

Il compilatore MIDL non tenta di elaborare le direttive #pragma che non iniziano con il prefisso "midl_". Altre direttive #pragma nel file IDL vengono passate al file di intestazione generato senza modifiche.

Esempi

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

Vedere anche

cpp_quote

File IDL (Interface Definition)

Importazione

/Zp