max_is (atributo)
El atributo [max_is] designa el valor máximo de un índice de matriz válido.
[max_is(limited-expression-list )]
-
limited-expression-list
-
Especifica una o varias expresiones de lenguaje C. Cada expresión se evalúa como un entero que representa el índice de matriz válido más alto. El compilador MIDL admite expresiones condicionales, expresiones lógicas, expresiones relacionales y expresiones aritméticas. MIDL no permite invocaciones de función en expresiones y no permite operadores de incremento y decremento. Separe varias expresiones con comas.
El atributo [max_is] no corresponde necesariamente al número de elementos de la matriz. Para una matriz de tamaño n en C, donde el primer elemento de matriz es el número de elemento cero, el valor máximo de un índice de matriz válido es n-1.
El atributo [max_is] no se puede usar como atributo de campo al mismo tiempo que el atributo [size_is].
Aunque es legal usar el atributo [max_is] con una expresión constante, hacerlo es ineficaz e innecesario. Por ejemplo, use una matriz de tamaño fijo:
/* transmits values of a[0]... a[MAX_SIZE-1] */
HRESULT Proc3([in] short Arr[MAX_SIZE]);
en lugar de:
/* 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];