max_is 屬性
[max_is]屬性會指定有效陣列索引的最大值。
[max_is(limited-expression-list )]
-
limited-expression-list
-
指定一或多個 C 語言運算式。 每個運算式都會評估為代表最高有效陣列索引的整數。 MIDL 編譯器支援條件運算式、邏輯運算式、關聯運算式和算術運算式。 MIDL 不允許運算式中的函式呼叫,而且不允許遞增和遞減運算子。 以逗號分隔多個運算式。
[max_is]屬性不一定對應至陣列中的元素數目。 若為 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];