/char 參數

/char參數有助於確保 MIDL 編譯器和 C 編譯器可針對所有charsmall類型正確運作。

midl /char { signed | unsigned | ascii7 }

切換選項

簽署

指定 char 的預設 C 編譯器類型已簽署。 所有未伴隨符號規格的 字元 都會產生為不帶正負號的 char。

符號

指定 char 的預設 C 編譯器類型為不帶正負號。 所有未伴隨符號規格的小型用法都會產生為帶正負號的小型。

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

另請參閱

char

一般 MIDL 命令列語法

/osf