max_is (attributo)
L'attributo [max_is] definisce il valore massimo per un indice di matrice valido.
[max_is(limited-expression-list )]
Parametri
-
limited-expression-list
-
Specifica una o più espressioni del linguaggio C. Ogni espressione restituisce un numero intero che rappresenta l'indice di matrice valido più alto. Il compilatore MIDL supporta espressioni condizionali, espressioni logiche, espressioni relazionali ed espressioni aritmetiche. MIDL non consente chiamate di funzione nelle espressioni e non consente operatori di incremento e decremento. Separare più espressioni con virgole.
Commenti
L'attributo [max_is] non corrisponde necessariamente al numero di elementi nella matrice. Per una matrice di dimensioni n in C, dove il primo elemento della matrice è il numero di elemento zero, il valore massimo per un indice di matrice valido è n-1.
L'attributo [max_is] non può essere usato come attributo di campo contemporaneamente all'attributo [size_is].
Anche se è legale usare l'attributo [max_is] con un'espressione costante, questa operazione è inefficiente e non necessaria. Ad esempio, usare una matrice di dimensioni fisse:
/* transmits values of a[0]... a[MAX_SIZE-1] */
HRESULT Proc3([in] short Arr[MAX_SIZE]);
invece di:
/* legal but marshaling code is much slower */
HRESULT Proc3([in max_is(MAX_SIZE-1)] short Arr[] );
Esempi
/* 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];
Vedere anche