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

另请参阅

字段属性

接口定义 (IDL) 文件

min_is

size_is