atribut max_is
Atribut [max_is] menunjuk nilai maksimum untuk indeks array yang valid.
[max_is(limited-expression-list )]
-
daftar ekspresi terbatas
-
Menentukan satu atau beberapa ekspresi bahasa C. Setiap ekspresi mengevaluasi ke bilangan bulat yang mewakili indeks array tertinggi yang valid. Kompilator MIDL mendukung ekspresi kondisional, ekspresi logis, ekspresi relasional, dan ekspresi aritmatika. MIDL tidak mengizinkan pemanggilan fungsi dalam ekspresi dan tidak memungkinkan operator kenaikan dan penurunan. Pisahkan beberapa ekspresi dengan koma.
Atribut [max_is] tidak selalu sesuai dengan jumlah elemen dalam array. Untuk array ukuran n di C, di mana elemen array pertama adalah angka elemen nol, nilai maksimum untuk indeks array yang valid adalah n–1.
Atribut [max_is] tidak dapat digunakan sebagai atribut bidang pada saat yang sama dengan atribut[size_is].
Meskipun legal untuk menggunakan atribut [max_is] dengan ekspresi konstan, melakukannya tidak efisien dan tidak perlu. Misalnya, gunakan array ukuran tetap:
/* transmits values of a[0]... a[MAX_SIZE-1] */
HRESULT Proc3([in] short Arr[MAX_SIZE]);
Melainkan:
/* 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];