pragma-Attribut
Die # pragma midl _ echo-Direktive weist MIDL an, die angegebene Zeichenfolge ohne anführungszeichen in der generierten Headerdatei auszugeben.
#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 # Pragmadirektive ohne Verarbeitung durch den MIDL-Compiler in die generierte Headerdatei eingefügt werden.
-
n
-
Gibt die aktuelle Paketgröß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-Direktiven 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 # "windows 4 definieren" trifft, 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 C-Präprozessormakrodefinitionen den MIDL-Compiler an den C-Compiler übergeben können, verwenden Sie die # pragma midl _ echo- oder cpp-Anführungszeichendirektive. _ Diese Anweisungen weisen den MIDL-Compiler an, eine Headerdatei zu generieren, die die Parameterzeichenfolge mit den entfernten Anführungszeichen enthält. Die # Pragma-Anweisungen midl _ echo und cpp _ quote sind gleichwertig.
Die # Pragma pack-Direktive wird vom MIDL-Compiler verwendet, um das Packen von Strukturen zu steuern. Er überschreibt den Befehlszeilenschalter /Zp. Die Option pack (n) legt die aktuelle Paketgröß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 enthalten eine Paketgröße und eine optionale ID. Der Stapel ist nur durch den verfügbaren Arbeitsspeicher mit der aktuellen Paketgröße am oberen Rand des Stapels beschränkt.
- Packen (Push) führt dazu, dass die aktuelle Paketgröße auf den Packstapel gepusht wird. Der Stapel ist durch den verfügbaren Arbeitsspeicher beschränkt.
- Pack (push, n )entspricht pack (push), gefolgt von pack (n).
- Pack (push, id) pusht auch id zusammen mit der Packgröße auf den Packstapel.
- Pack (push, id, n) ist identisch mit pack (push, id), gefolgt von pack (n).
- Packen (Pop) führt zum Popen des Packstapels. Nicht ausgeglichene Pops verursachen Warnungen und legen die aktuelle Paketgröße auf den Befehlszeilenwert fest.
- Wenn pack (pop, id, n) angegeben ist, wird n ignoriert.
Der MIDL-Compiler platziert die in den \ _ CPP-Anführungszeichen und Pragmadirektiven angegebenen Zeichenfolgen in der Headerdatei in der Sequenz, in der sie in der IDL-Datei angegeben sind, und relativ zu anderen Schnittstellenkomponenten in der IDL-Datei. Die Zeichenfolgen sollten in der Regel nach allen Importvorgängen im Abschnitt interface-body der IDL-Datei angezeigt werden.
Der MIDL-Compiler versucht nicht, # Pragmadirektiven zu verarbeiten, die nicht mit dem Präfix "midl" _ beginnen. Andere # Pragmadirektiven in der IDL-Datei werden ohne Änderungen an 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)