Atributo max_is
O atributo [max_is] designa o valor máximo para um índice de matriz válido.
[max_is(limited-expression-list )]
-
limited-expression-list
-
Especifica uma ou mais expressões de linguagem C. Cada expressão é avaliada como um inteiro que representa o índice de matriz mais alto válido. O compilador MIDL dá suporte a expressões condicionais, expressões lógicas, expressões relacionais e expressões aritméticas. MIDL não permite invocações de função em expressões e não permite operadores de incremento e decremento. Separe várias expressões com vírgulas.
O atributo [max_is] não corresponde necessariamente ao número de elementos na matriz. Para uma matriz de tamanho n em C, em que o primeiro elemento de matriz é o número zero do elemento, o valor máximo para um índice de matriz válido é n–1.
O atributo [max_is] não pode ser usado como um atributo de campo ao mesmo tempo que o atributo [size_is] .
Embora seja legal usar o atributo [max_is] com uma expressão constante, fazer isso é ineficiente e desnecessário. Por exemplo, use uma matriz de tamanho fixo:
/* transmits values of a[0]... a[MAX_SIZE-1] */
HRESULT Proc3([in] short Arr[MAX_SIZE]);
em vez 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];