struct-Attribut
Die Struktur Schlüsselwort (keyword) wird in einem Strukturtypspezifizierer verwendet.
struct [[ struct-tag ]]
{
[[ [ field-attribute-list ] ]] type-specifier declarator-list;
...
};
-
struct-tag
-
Gibt ein optionales Tag für die -Struktur an.
-
field-attribute-list
-
Gibt null oder mehr Feldattribute an, die für den Strukturmember gelten. Gültige Feldattribute sind [first_is], [last_is], [length_is], [max_is] und [size_is]; die Verwendungsattribute [string] und [ignore]; das Zeiger-Attribut [ref], [eindeutig], oder [ptr]; und das Union-Attribut [switch_type]. Trennen Sie mehrere Feldattribute durch Kommas.
-
Typspezifizierer
-
Gibt einen Basistyp, eine Struktur, einen Union-, einen Enumerationstyp oder einen Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.
-
declarator-list
-
Gibt mindestens einen C-Standard-Deklarator an, z. B. Bezeichner, Zeiger-Deklaratoren und Array-Deklaratoren. (Funktionsdeklaratoren und Bitfelddeklarationen sind in Strukturen, die in Remoteprozeduraufrufen übertragen werden, nicht zulässig. Diese Deklaratoren sind in Strukturen zulässig, die nicht übertragen werden.) Trennen Sie mehrere Deklaratoren durch Kommas.
Der IDL-Strukturtypspezifizierer struct unterscheidet sich auf folgende Weise vom Standardmäßigen C-Typspezifizierer:
- Jedem Strukturmember können optionale Feldattribute zugeordnet werden, die Merkmale dieses Strukturelements für die Zwecke eines Remoteprozeduraufrufs beschreiben.
- Bitfelder und Funktionsdeklarationsfunktionen sind in Strukturen, die in Remoteprozeduraufrufen verwendet werden, nicht zulässig. Diese Standardmäßigen C-Deklaratorkonstrukte können nur verwendet werden, wenn die Struktur nicht im Netzwerk übertragen wird.
Die Form von Strukturen muss plattformübergreifend identisch sein, um die Interkonnektivität sicherzustellen.
typedef struct _PITCHER_RECORD_TYPE
{
short flag;
[switch_is(flag)] union PITCHER_STATISTICS_TYPE p;
} PITCHER_RECORD_TYPE;