/char スイッチ
/char スイッチは、MIDL コンパイラと C コンパイラがすべての char 型と小さい型に対して正しく動作することを確認するのに役立ちます。
midl /char { signed | unsigned | ascii7 }
-
署名
-
char の既定の C コンパイラ型に署名することを指定します。 符号指定を伴わない char のすべての出現は、符号なし char として生成されます。
-
符号 なし
-
char の既定の C コンパイラ型が符号なしであることを指定します。 符号指定を伴わない small のすべての用途は、符号付き small として生成されます。
-
ascii7
-
すべての char 値を、特定の符号キーワード (keyword)なしで生成されたファイルに渡されるように指定します。 符号仕様を伴わない small のすべての用途は 、小さいものとして生成されます。
定義上、MIDL char は符号なしです。 "Small" は char (#define small char ) で定義され、MIDL small は符号付きです。
/char スイッチは、C コンパイラの符号宣言がその型の MIDL 既定値と競合する場合に、生成されたファイルで明示的な符号付き宣言または符号なし宣言を指定するように MIDL コンパイラに指示します。
MIDL コンパイラは、スタブを C ソース コードとして生成します。これは、クライアント プログラムとサーバー プログラムの一部としてコンパイルする必要があります。 一部のコンパイラでは、ソース コードで char データが指定されているすべての場所で、符号付き char を使用します。 MIDL コンパイラが生成するスタブ ソース コードは、すべての char データを 符号なし char として扱います。 MIDL コンパイラが単に IDL ファイル内のすべての char データをスタブ内の char データとして生成した場合、char データに符号付き char を使用するコンパイラはスタブ ソース コードで競合を引き起こします。
/char コマンド ライン スイッチの目的は、これらの潜在的な競合を解決することです。 IDL ファイルで char として指定されたすべてのデータは、スタブ ソース コードの 符号なし char として保持されます。 また、 小さな データも署名済みとして保持されます。
次の表は、生成された型をまとめたものです。
midl /char オプション | 生成された char 型 | 生成された小さい型 |
---|---|---|
midl /char signed | unsigned char | small |
midl /char unsigned | char | 署名付き small |
midl /char ascii7 | char | small |
/char 符号付きオプションは、C コンパイラの char 型と小さい型が署名されていることを示します。 char の MIDL の既定値と一致させるには、MIDL コンパイラは、符号指定を伴わない char のすべての使用を符号なし char に変換する必要があります。 この C コンパイラの既定値は small の MIDL 既定値と一致するため、 small 型は変更されません。
/char unsigned オプションは、C コンパイラの char 型が符号なしであることを示します。 MIDL コンパイラは、符号指定を伴わない small のすべての用途を符号付き small に変換します。
ascii7 オプションは、明示的な符号指定が char 型に追加されていないことを示します。 small 型は small として生成されます。
混乱を避けるために、IDL ファイルで可能な限り 、char と small 型の明示的な符号指定を使用する必要があります。 IDL ファイルでの明示的に署名された char 型の使用は、DCE IDL ではサポートされていないことに注意してください。 したがって、MIDL /osf スイッチを使用してコンパイルする場合、この機能は使用できません。
/char に関連する詳細については、「small」を参照してください。
midl /char signed filename.idl
midl /char unsigned filename.idl
midl /char ascii7 filename.idl