const キーワードは、型宣言の型または関数パラメーターの型を変更し、値が変化しないようにします。
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 * があります。 整数型と文字型は 、符号 付きまたは 符号なしにすることができます。
-
識別子
-
有効な MIDL 識別子を指定します。 有効な MIDL 識別子は、最大 31 文字の英数字またはアンダースコア文字で構成され、英字またはアンダースコア文字で始まる必要があります。
-
const-expression
-
指定した型に適した式、識別子、または数値または文字定数を指定します。整数定数の定数整数リテラルまたは定数整数式。ブール型のコンパイル時に計算できる ブール 式。 char 型の単一文字定数。 および [string] 型の文字列定数。 void * 型は NULL にのみ初期化できます。
-
type-attribute-list
-
型に適用される 1 つ以上の属性を指定します。
-
pointer-type
-
有効な MIDL ポインター型を指定します。
-
declarator と declarator-list
-
識別子、ポインター宣言子、配列宣言子など、標準の C 宣言子を指定します。 詳細については、「 配列と Sized-Pointer 属性、 配列、および 配列とポインター」を参照してください。 宣言子リストは、コンマで区切られた 1 つ以上の宣言子で構成されます。 関数宣言子のパラメーター名識別子は省略可能です。
-
function-attr-list
-
関数に適用される 0 個以上の属性を指定します。 有効な関数属性は [callback], [local]; です。ポインター属性 [ref]、 [unique]、または [ptr];および使用法属性 [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 );
こちらも参照ください