last_is - атрибут
Атрибут поля [last_is] указывает индекс последнего передаваемого элемента массива. Если указанный индекс равен нулю или отрицательному значению, элементы массива не передаются.
[last_is( limited-expression-list )]
-
limited-expression-list
-
Задает одно или несколько выражений языка C. Каждое выражение вычисляется как целое число, представляющее индекс массива последнего передаваемого элемента массива. Компилятор MIDL поддерживает условные выражения, логические выражения, реляционные выражения и арифметические выражения. MIDL не разрешает вызовы функций в выражениях, а также операторы приращения и декремента. Разделяйте несколько выражений запятыми.
Атрибут [last_is] определяет значение индекса массива, соответствующего атрибуту [length_is] , если не указан параметр [length_is] . Связь между этими индексами массива выглядит следующим образом: length = last - first + 1.
Если значение индекса массива, указанного параметром [first_is] , больше значения, указанного параметром [last_is], то передаются нулевые элементы.
Атрибут [last_is] нельзя использовать в качестве атрибута поля одновременно с атрибутом [length_is] или атрибутом [string] .
Использование константного выражения с атрибутом [last_is] является недопустимым использованием атрибута . Это является законным, но неэффективным и приведет к замедлению маршалинга кода.
Если значение, указанное параметром [max_is] , равно или больше нуля, должно иметь значение true: 0 <= last_is <= max_is.
proc1(
[in] short Last,
[in, last_is(Last)] short asNumbers[MAXSIZE]);