Atributo max_is

O atributo [max_is] designa o valor máximo para um índice de matriz válido.

[max_is(limited-expression-list )]

Parâmetros

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.

Comentários

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[] );

Exemplos

/* 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];

Confira também

Atributos de campo

Arquivo IDL (Definição de Interface)

min_is

size_is