構造体の宣言の書式を以下に示します。
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]; };