pragma 屬性

#pragma midl_echo 指示詞會指示 MIDL 在產生的標頭檔中發出指定的字串,而不發出引號字元。

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

參數

string

指定插入所產生標頭檔案的字串。 插入程式期間會移除引號。

token-sequence

指定標記序列,這些權杖會插入產生的標頭檔做為 #pragma 指示詞的一部分,而不需由 MIDL 編譯器處理。

n

指定目前的套件大小。 有效值為 1、2、4、8 和 16。

id

指定使用者識別碼。

備註

出現在 IDL 檔案中的 C 語言前置處理指示詞是由 C 編譯器的預處理器處理。 IDL 檔案中的 #define 指示詞可在 MIDL 編譯期間使用,但不適用於 C 編譯器。

例如,當預處理器遇到 「#define WINDOWS 4」 指示詞時,預處理器會將 IDL 檔案中所有出現的 「WINDOWS」 取代為 「4」。 在 C 編譯時期無法使用符號 「WINDOWS」。

若要允許 C 預處理器巨集定義透過 MIDL 編譯器傳遞至 C 編譯器,請使用 #pragma midl_echocpp_quote 指示詞。 這些指示詞會指示 MIDL 編譯器產生標頭檔,其中包含已移除引號的參數字串。 #pragma midl_echocpp_quote指示詞相等。

MIDL 編譯器會使用#pragma pack指示詞來控制結構的封裝。 它會覆寫 /Zp 命令列參數。 套件 (n) 選項會將目前的套件大小設定為特定值:1、2、4、8 或 16。 套件 (推送) 和套件 (快顯) 選項具有下列特性:

  • 編譯器會維護封裝堆疊。 封裝堆疊的元素包括套件大小和選擇性 識別碼。堆疊只會受限於堆疊頂端目前套件大小的可用記憶體。
  • 套件 (推送) 會導致目前推送至封裝堆疊的套件大小。 堆疊受限於可用的記憶體。
  • pack (push,n) 與 pack (push) 和 pack (n) 相同。
  • 套件 (推送、 識別碼) 也會將 識別碼 推送至封裝堆疊以及套件大小。
  • Pack (push、 idn) 與 pack (push 相同, 識別碼) 後面接著 pack (n) 。
  • 套件 (快顯) 會導致封裝堆疊快顯。 未平衡的快顯視窗會造成警告,並將目前的套件大小設定為命令列值。
  • 如果已指定 pack (pop、 idn) ,則會忽略 n

MIDL 編譯器會將 指定于 \cpp_quotepragma 指示詞中的字串放在 IDL 檔案中指定的順序中,以及相對於 IDL 檔案中的其他介面元件。 所有 入作業之後,字串通常應該會出現在 IDL 檔案的介面主體區段中。

MIDL 編譯器不會嘗試處理開頭為 「midl_」 前置詞 的#pragma 指示詞。IDL 檔案中的其他 #pragma 指示詞會傳遞至產生的標頭檔,而不會變更。

範例

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

另請參閱

cpp_quote

介面定義 (IDL) 檔案

進口

/Zp