/char 參數
/char參數有助於確保 MIDL 編譯器和 C 編譯器可針對所有char和small類型正確運作。
midl /char { signed | unsigned | ascii7 }
-
簽署
-
指定 char 的預設 C 編譯器類型已簽署。 所有未伴隨符號規格的 字元 都會產生為不帶正負號的 char。
-
符號
-
ascii7
-
指定所有 char 值都會傳遞至產生的檔案,而不需要特定的 sign 關鍵字。 所有未伴隨符號規格的 小型 用法都會產生為 小型。
根據定義,MIDL char 是未簽署的。 「Small」 是以 char (#define small char) 來定義,而 MIDL small 則會簽署。
當 C 編譯器簽署宣告與該類型的 MIDL 預設值衝突時, /char 參數會指示 MIDL 編譯器在產生的檔案中指定明確 簽署 或 未簽署 的宣告。
請記住,MIDL 編譯器會產生存根做為 C 原始程式碼,您必須編譯為用戶端和伺服器程式的一部分。 有些編譯器會在原始程式碼中指定字元資料的地方使用帶正負號的 char。 MIDL 編譯器產生的存根原始程式碼會將所有 char 資料視為 不帶正負號的字元。 如果 MIDL 編譯器只會在 IDL 檔案中產生所有 char資料做為存根中的char資料,則針對char資料使用帶正負號字元的編譯器會造成存根原始程式碼中的衝突。
/char命令列參數的目的是要解決這些潛在的衝突。 它會保留 IDL 檔案中指定為 char 的所有資料,作為存根原始程式碼中的 unsigned char 。 它也會維護已簽署的 小型 資料。
下表摘要說明產生的類型。
midl /char 選項 | 產生的 char 類型 | 產生的小型類型 |
---|---|---|
midl /char 帶正負號 | unsigned char | small |
midl /char unsigned | char | 帶正負號的小型 |
midl /char ascii7 | char | small |
/char帶正負號的選項表示 C 編譯器字元和小型類型已簽署。 若要比對char的 MIDL 預設值,MIDL 編譯器必須將字元的所有用法轉換為未簽署的字元規格。 因為這個 C 編譯器預設值符合SMALL的 MIDL 預設值,所以不會修改小型類型。
/char unsigned 選項表示 C 編譯器字元類型為 unsigned。 MIDL 編譯器會將 所有未 伴隨符號規格的小型用法轉換為 已簽署的 small。
ascii7 選項表示未將明確的符號規格新增至 char 類型。 小型 類型會 產生為 small。
若要避免混淆,您應該盡可能在 IDL 檔案中使用 char 和 small 類型的明確符號規格。 請注意,DCE IDL 不支援在 IDL 檔案中使用明確簽署 的字元 類型。 因此,當您使用 MIDL /osf 參數進行編譯時,無法使用此功能。
如需 /char的詳細資訊,請參閱 small。
midl /char 帶正負號的 filename.idl
midl /char unsigned filename.idl
midl /char ascii7 filename.idl