max_is 属性
[max_is] 属性は、有効な配列インデックスの最大値を指定します。
[max_is(limited-expression-list )]
-
limited-expression-list
-
1 つ以上の C 言語式を指定します。 各式は、最も有効な配列インデックスを表す整数に評価されます。 MIDL コンパイラは、条件式、論理式、リレーショナル式、および算術式をサポートします。 MIDL では、式での関数呼び出しは許可されず、インクリメント演算子とデクリメント演算子は許可されません。 複数の式をコンマで区切ります。
[max_is] 属性は、配列内の要素の数に必ずしも対応するとは限りません。 最初の配列要素が要素番号 0 である C のサイズ n の配列の場合、有効な配列インデックスの最大値は n から 1 です。
[max_is] 属性を [size_is] 属性と同時にフィールド属性として使用することはできません。
定数式で [max_is] 属性を使用することは有効ですが、これは非効率的で不要です。 たとえば、固定サイズの配列を使用します。
/* transmits values of a[0]... a[MAX_SIZE-1] */
HRESULT Proc3([in] short Arr[MAX_SIZE]);
次のように記述する必要がありません。
/* legal but marshaling code is much slower */
HRESULT Proc3([in max_is(MAX_SIZE-1)] short Arr[] );
/* if m = 10, there are 11 transmitted elements (a[0]...a[10])*/
HRESULT Proc1(
[in] short m,
[in, max_is(m)] short a[]);
/* if m = 10, the valid range for b is b[0...10][20] */
HRESULT Proc2(
[in] short m,
[in, max_is(m)] short b[][20];