max_is 特性
[max_is] 属性指定有效数组索引的最大值。
[max_is(limited-expression-list )]
parameters
-
limited-expression-list
-
指定一个或多个 C 语言表达式。 每个表达式的计算结果为表示最高有效数组索引的整数。 MIDL 编译器支持条件表达式、逻辑表达式、关系表达式和算术表达式。 MIDL 不允许表达式中的函数调用,也不允许递增和递减运算符。 用逗号分隔多个表达式。
备注
[max_is] 属性不一定对应于数组中的元素数。 对于 C 中 n 号大小为 的 数组,其中第一个数组元素为元素编号为零,有效数组索引的最大值为 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];
另请参阅