Freigeben über


pragma-Attribut

Die #pragma midl_echo-Direktive weist MIDL an, die angegebene Zeichenfolge ohne anführungszeichen in die generierte Headerdatei auszustrahlen.

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

Parameter

string

Gibt eine Zeichenfolge an, die in die generierte Headerdatei eingefügt wird. Die Anführungszeichen werden während des Einfügevorgangs entfernt.

Tokensequenz

Gibt eine Sequenz von Token an, die als Teil einer #pragma-Direktive ohne Verarbeitung durch den MIDL-Compiler in die generierte Headerdatei eingefügt werden.

n

Gibt die aktuelle Packgröße an. Gültige Werte sind 1, 2, 4, 8 und 16.

ID

Gibt den Benutzerbezeichner an.

Bemerkungen

C-Sprachvorverarbeitungsdirektiven, die in der IDL-Datei angezeigt werden, werden vom Präprozessor des C-Compilers verarbeitet. Die #define-Anweisungen in der IDL-Datei sind während der MIDL-Kompilierung verfügbar, jedoch nicht für den C-Compiler.

Wenn der Präprozessor beispielsweise auf die Anweisung "#define WINDOWS 4" stößt, ersetzt der Präprozessor alle Vorkommen von "WINDOWS" in der IDL-Datei durch "4". Das Symbol "WINDOWS" ist zur C-Kompilierzeit nicht verfügbar.

Damit die Makrodefinitionen des C-Präprozessors den MIDL-Compiler an den C-Compiler übergeben können, verwenden Sie die #pragma midl_echo- oder cpp_quote-Direktive . Diese Anweisungen weisen den MIDL-Compiler an, eine Headerdatei zu generieren, die die Parameterzeichenfolge mit entfernten Anführungszeichen enthält. Die #pragma midl_echo - und cpp_quote-Direktiven sind gleichwertig.

Die #pragma Pack-Anweisung wird vom MIDL-Compiler verwendet, um das Packen von Strukturen zu steuern. Der Befehlszeilenschalter /Zp wird überschrieben. Die Option pack (n) legt die aktuelle Packgröße auf einen bestimmten Wert fest: 1, 2, 4, 8 oder 16. Die Optionen Pack (Push) und Pack (Pop) weisen die folgenden Merkmale auf:

  • Der Compiler verwaltet einen Packstapel. Die Elemente des Packstapels umfassen eine Packungsgröße und eine optionale ID. Der Stapel ist nur durch den verfügbaren Arbeitsspeicher mit der aktuellen Packgröße am anfang des Stapels begrenzt.
  • Pack (Push) führt dazu, dass die aktuelle Packgröße auf den Packstapel geschoben wird. Der Stapel ist durch den verfügbaren Arbeitsspeicher begrenzt.
  • Pack (push,n) ist identisch mit Pack (Push) gefolgt von Pack (n).
  • Pack (Push, ID) pusht auch die ID zusammen mit der Packgröße auf den Packstapel.
  • Pack (push, id, n) ist identisch mit pack (push, id) gefolgt von pack (n).
  • Pack (Pop) führt dazu, dass der Packstapel geknallt wird. Unausgeglichene Popups verursachen Warnungen und legen die aktuelle Packgröße auf den Befehlszeilenwert fest.
  • Wenn pack (pop, id, n) angegeben ist, wird n ignoriert.

Der MIDL-Compiler platziert die in den Direktiven \cpp_quote und Pragma angegebenen Zeichenfolgen in der Headerdatei in der Sequenz, in der sie in der IDL-Datei angegeben werden, und relativ zu anderen Schnittstellenkomponenten in der IDL-Datei. Die Zeichenfolgen sollten normalerweise nach allen Importvorgängen im Abschnitt Interface-Body der IDL-Datei angezeigt werden.

Der MIDL-Compiler versucht nicht, #pragma-Anweisungen zu verarbeiten, die nicht mit dem Präfix "midl_" beginnen. Andere #pragma-Anweisungen in der IDL-Datei werden ohne Änderungen in die generierte Headerdatei übergeben.

Beispiele

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

Weitere Informationen

cpp_quote

IDL-Datei (Interface Definition)

Importieren

/Zp