無名共用体

提供: RAD Studio
移動先: 案内検索

共用体:インデックス への移動

タグを持たず、名前のあるオブジェクト(または他の型)の宣言に使用されない共用体は、無名共用体、と呼ばれます。これは次の形式です:

union { member_list };

このメンバーには、共用体が宣言されたスコープ内では、構文 x.y または p->y を使用しなくても、直接アクセスすることができます。

無名共用体は、グローバル、入れ子、非入れ子のいずれにすることもできます。ANSI-C では、無名共用体を使用できません。ANSI-C++ では、無名共用体の 3 つのタイプすべて使用することができます。

C++ 無名共用体

無名共用体は、メンバー関数や、private または protected メンバーを持つことはできません。ファイル レベルでは、無名共用体は静的に宣言される必要があります。ローカルの無名共用体は、自動または静的でなければならず、言い換えると、無名共用体は、外部リンクを持つことはできません。入れ子になっていない無名共用体は、C++ でのみ使用できます。

入れ子無名共用体

入れ子になった無名共用体の外側の構造体、クラス、共用体には、タグがなければなりません。C および C++ では、デフォルトで入れ子になった無名共用体を使用できます。C でのみ、入れ子無名共用体は、任意でタグを持つことができます。

例:

struct outer {
  int x;
};

int main(void)
{
  struct outer o;
}