Attributo matrici
Le matrici sono raccolte omogenee di dati a cui si accede da un numero di indice o di elemento.
typedef [ [type-attr-list] ] type-specifier [pointer-decl] array-declarator;
typedef [ [type-attr-list] ] struct [ tag ]
{
[ [ field-attribute-list ] ] type-specifier [pointer-decl] array-declarator;
...
};
typedef [ [type-attr-list] ] union [ tag ]
{
[ case (limited-expression [ , ... ] ) ]
[ [ field-attribute-list ] ] type-specifier [pointer-decl] array-declarator;
[ [ default ]
[ [ field-attribute-list ] ] type-specifier [pointer-decl] array-declarator;
]
};
[[ [function-attribute-list] ]] type-specifier [[pointer-decl]] function-name(
[[ [param-attr-list] ]] type-specifier [[pointer-decl]] array-declarator
, ...);
-
type-attr-list
-
Specifica zero o più attributi che si applicano al tipo. Gli attributi di tipo validi includono [handle], [switch_type], [transmit_as]; l'attributo puntatore [ref], [unique]o [ptr]; e gli attributi di utilizzo [context_handle], [string]e [ignore]. Separare più attributi con virgole.
-
type-specifier
-
Specifica l'identificatore del tipo, il tipo di base, lo struct, l'unione o il tipo di enumerazione . La specifica del tipo può includere una specifica di archiviazione facoltativa.
-
pointer-decl
-
Specifica zero o più dichiaratori del puntatore. Un dichiaratore di puntatore è lo stesso del dichiaratore del puntatore usato in C, costruito dall'indicatore * di progettazione, modificatori come per lontano e qualificatore const.
-
array-declarator
-
Specifica il nome della matrice, seguito da uno dei costrutti seguenti per ogni dimensione della matrice: "[ ]", "[*]", "[const1]" o "[lower... upper]" dove lower e upper sono valori costanti che rappresentano i limiti inferiori e superiori. La costante inferiore deve restituire zero.
-
tag
-
Specifica un tag facoltativo per la struttura o l'unione.
-
field-attribute-list
-
Specifica zero o più attributi di campo che si applicano alla struttura, al membro dell'unione o al parametro della funzione. Gli attributi di campo validi includono [first_is], [last_is], [length_is], [max_is], [size_is]; gli attributi di utilizzo [string], e [ignore]; gli attributi del puntatore [ref], [unique]e [ptr]; e l'attributo union [switch_type]. Separare più attributi di campo con virgole. Si noti che gli attributi elencati in precedenza, [first_is], [last_is] e [ignore] non sono validi per le unioni.
-
espressione limitata
-
Specifica un'espressione del linguaggio C. Il compilatore MIDL supporta espressioni condizionali, espressioni logiche, espressioni relazionali ed espressioni aritmetiche. MIDL non consente chiamate di funzione nelle espressioni e non consente operatori di incremento e decremento.
-
function-attribute-list
-
Specifica zero o più attributi che si applicano alla funzione. Gli attributi di funzione validi sono [callback], [local]; l'attributo puntatore [ref], [unique]o [ptr]; e gli attributi di utilizzo [string], e [context_handle].
-
function-name
-
Specifica il nome della routine remota.
-
param-attr-list
-
Specifica gli attributi direzionali e uno o più attributi di campo facoltativi che si applicano al parametro della matrice. Gli attributi di campo validi includono [max_is], [size_is], [length_is], [first_is]e [last_is].
Le matrici in MIDL usano uno stile simile ma non esattamente uguale a C e C++. Per altre informazioni, vedere Matrici MIDL.