結構屬性
結構類型規範中使用 struct 關鍵字。
struct [[ struct-tag ]]
{
[[ [ field-attribute-list ] ]] type-specifier declarator-list;
...
};
-
struct-tag
-
指定 結構的選擇性標記。
-
field-attribute-list
-
指定套用至結構成員的零個或多個欄位屬性。 有效的欄位屬性包括[first_is]、[last_is]、[length_is]、[max_is]和[size_is];使用屬性[string]和[ignore];指標屬性[ref]、[unique]或[ptr];和等位屬性[switch_type]。 以逗號分隔多個欄位屬性。
-
type-specifier
-
指定 基底類型、 結構、 等位或 列舉 類型或類型識別碼。 選擇性的儲存體規格可以在 type-specifier之前。
-
declarator-list
-
指定一或多個標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 (遠端程序呼叫中傳輸的結構不允許函數宣告子和位欄位宣告。在未傳輸的結構中允許這些宣告子。) 以逗號分隔多個宣告子。
IDL 結構類型 規範結構與標準 C 類型規範不同,方式如下:
- 每個結構成員都可以與選擇性欄位屬性相關聯,這些屬性會針對遠端程序呼叫的目的描述該結構成員的特性。
- 在遠端程序呼叫中使用的結構中,不允許使用位欄位和函數宣告子。 只有在結構未在網路上傳輸時,才能使用這些標準 C 宣告子建構。
結構的形狀必須跨平臺相同,以確保互連性。
typedef struct _PITCHER_RECORD_TYPE
{
short flag;
[switch_is(flag)] union PITCHER_STATISTICS_TYPE p;
} PITCHER_RECORD_TYPE;