max_is-Attribut
Das Attribut [max_is] gibt den Maximalwert für einen gültigen Arrayindex an.
[max_is(limited-expression-list )]
Parameter
-
limited-expression-list
-
Gibt mindestens einen C-Sprachausdruck an. Jeder Ausdruck wird als ganze Zahl ausgewertet, die den höchst gültigen Arrayindex darstellt. Der MIDL-Compiler unterstützt bedingte Ausdrücke, logische Ausdrücke, relationale Ausdrücke und arithmetische Ausdrücke. MIDL lässt keine Funktionsaufrufe in Ausdrücken zu und lässt keine Inkrement- und Dekrementoperatoren zu. Trennen Sie mehrere Ausdrücke durch Kommas.
Bemerkungen
Das Attribut [max_is] entspricht nicht unbedingt der Anzahl der Elemente im Array. Für ein Array der Größe n in C, bei dem das erste Arrayelement element number zero ist, ist der Maximalwert für einen gültigen Arrayindex n–1.
Das Attribut [max_is] kann nicht gleichzeitig mit dem [size_is] -Attribut als Feldattribute verwendet werden.
Obwohl es legal ist, das Attribut [max_is] mit einem konstanten Ausdruck zu verwenden, ist dies ineffizient und unnötig. Verwenden Sie beispielsweise ein Array mit fester Größe:
/* transmits values of a[0]... a[MAX_SIZE-1] */
HRESULT Proc3([in] short Arr[MAX_SIZE]);
Anstelle von:
/* legal but marshaling code is much slower */
HRESULT Proc3([in max_is(MAX_SIZE-1)] short Arr[] );
Beispiele
/* 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];
Weitere Informationen