max_is - атрибут

Атрибут [max_is] обозначает максимальное значение допустимого индекса массива.

[max_is(limited-expression-list )]

Параметры

limited-expression-list

Задает одно или несколько выражений языка C. Каждое выражение вычисляется как целое число, представляющее самый высокий допустимый индекс массива. Компилятор MIDL поддерживает условные выражения, логические выражения, реляционные выражения и арифметические выражения. MIDL не разрешает вызовы функций в выражениях, а также операторы приращения и декремента. Разделяйте несколько выражений запятыми.

Комментарии

Атрибут [max_is] не обязательно соответствует количеству элементов в массиве. Для массива размером n в C, где первым элементом массива является нулевое число элемента, максимальное значение допустимого индекса массива равно n–1.

Атрибут [max_is] нельзя использовать в качестве атрибута поля одновременно с атрибутом [size_is] .

Хотя использовать атрибут [max_is] с константным выражением является законным, это неэффективно и не требуется. Например, используйте массив фиксированного размера:

/* transmits values of a[0]... a[MAX_SIZE-1] */ 
HRESULT Proc3([in] short Arr[MAX_SIZE]); 

вместо

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

См. также раздел

Атрибуты поля

Файл определения интерфейса (IDL)

min_is

size_is