const 属性
const キーワード (keyword)は、型宣言の型または関数パラメーターの型を変更し、値が変化しないようにします。
const const-type identifier = const-expression ;
[ typedef [ , type-attribute-list ] ] const const-type declarator-list;
[ typedef [ , type-attribute-list ] ] pointer-type const declarator-list;
[ [ function-attr-list ] ] type-specifier [ ptr-decl ] function-name(
[ [ parameter-attribute-list ] ] ) const;
const-type [declarator], [ [ parameter-attribute-list ] ] pointer-type const [declarator], ...);
パラメーター
-
const-type
-
有効な MIDL 整数、文字、文字列、またはブール型を指定します。 有効な MIDL 型には、 small、 short、 long、 char、charÂ*、 wchar_t、 wchar_t *、 byte、 byte *、 void * が含まれます。 整数型と文字型は 、符号 付きまたは 符号なしにすることができます。
-
identifier
-
有効な MIDL 識別子を指定します。 有効な MIDL 識別子は、最大 31 文字の英数字またはアンダースコア文字で構成され、アルファベットまたはアンダースコア文字で始まる必要があります。
-
const-expression
-
指定した型に適した式、識別子、または数値または文字定数を指定します。定数整数リテラルまたは整数定数の定数整数式。ブール型のコンパイル時に計算できる ブール 式。 char 型の 1 文字の定数。および [string] 型の文字列定数。 void * 型は NULL にのみ初期化できます。
-
type-attribute-list
-
型に適用される 1 つ以上の属性を指定します。
-
pointer-type
-
有効な MIDL ポインター型を指定します。
-
declarator と declarator-list
-
識別子、ポインター宣言子、配列宣言子など、標準の C 宣言子を指定します。 詳細については、「 配列とSized-Pointer属性、 配列、および 配列とポインター」を参照してください。 declarator-list は、コンマで区切られた 1 つ以上の宣言子で構成されます。 関数宣言子のパラメーター名識別子は省略可能です。
-
function-attr-list
-
関数に適用される 0 個以上の属性を指定します。 有効な関数属性は [callback], [local];ポインター属性 [ref]、[unique]、または [ptr];および usage 属性 [string]、[ignore]、および [context_handle]。
-
type-specifier
-
base_type、構造体、共用体、列挙型、または型識別子を指定します。 省略可能なストレージ仕様は 、型指定子の前に置くことができます。
-
ptr-decl
-
0 個以上のポインター宣言子を指定します。 ポインター宣言子は、C で使用されるポインター宣言子と同じです。これは、指定子、far などの修飾子、および修飾子 const から*構築されます。
-
function-name
-
リモート プロシージャの名前を指定します。
-
parameter-attribute-list
-
0 個以上の方向属性、フィールド属性、使用法属性、および指定したパラメーター型に適したポインター属性を指定します。 複数の属性をコンマで区切ります。
解説
MIDL を使用すると、IDL ファイルのインターフェイス本体で定数の整数、文字、文字列、ブール型を宣言できます。 Const 型の宣言は、生成されたヘッダー ファイルで #define ディレクティブとして再現されます。
DCE IDL コンパイラでは、定数式はサポートされていません。 したがって、MIDL コンパイラ /osf スイッチを使用する場合、この機能は使用できません。
以前に定義した定数は、後続の定数の割り当てられた値として使用できます。 定数整数式の値は、C 変換規則に従って、それぞれの整数型に自動的に変換されます。
文字定数の値は、単一引用符で囲まれた ASCII 文字である必要があります。 文字定数が単一引用符文字自体 (') の場合、\' のように、円記号 (\) の前に単一引用符文字を付ける必要があります。
文字列定数の値は、二重引用符で囲まれた文字列である必要があります。 文字列内では、\" のように、円記号 (\) 文字の前にリテラルの二重引用符 ( " ) を付ける必要があります。 文字列内では、円記号 (\) はエスケープ文字を表します。 文字列定数は、最大 255 文字で構成できます。
値 NULL は、void * 型の定数に対して有効な唯一の値です。 const 宣言に関連付けられている属性はすべて無視されます。
MIDL コンパイラは、const 初期化で範囲エラーをチェックしません。 たとえば、"const short x = 0xFFFFFFFF;" を指定すると、MIDL コンパイラはエラーを報告せず、初期化子は生成されたヘッダー ファイルで再現されます。
例
const void * p1 = NULL;
const char my_char1 = 'a';
const char my_char2 = my_char1;
const wchar_t my_wchar3 = L'a';
const wchar_t * pszNote = L"Note";
const unsigned short int x = 123;
typedef [string] const char *LPCSTR;
HRESULT GetName([out] wchar_t * const pszName );
関連項目