構造体の宣言の書式を以下に示します。
struct データ型名 {
構造体メンバの宣言
}; |
構造体メンバの宣言の書式を以下に示します(typedefは使用しません)。
基本データ型 メンバ名; シーケンス型 メンバ名; 構造体 メンバ名; 共用体 メンバ名; 固定小数点型 メンバ名; スコープ名 メンバ名; |
メンバ名には単独の識別子か配列を指定します。構造体メンバは1つ以上必要であり、空の構造体は許されていません。メンバ名には単独の識別子か配列を指定します。
以下に構造体の記述例を示します。
module A {
typedef long B;
};
struct S {
string name;
short number;
long value;
::A::B s;
};再帰的な型宣言は、シーケンス型を用いたものだけが許されています。
struct aaa {
long l;
sequence<aaa> bbb;
};構造体名を定義するために、 typedefを使うこともできます。
注意事項
IDLのstruct型はC言語のstruct型と異なり、構造体の宣言を意味します。このため、構造体のメンバに構造体を宣言する場合は、以下のように記述します。
struct A {
char xx;
};
struct B {
A yy;
};IDLのstruct型で、構造体のメンバに構造体を宣言する場合、以下のように配列型のメンバ名にstruct構造体名と同じ名前を指定することはできません。
struct A {
char xx;
};
struct B {
A A[5];
};