匿名クラス、匿名構造体、匿名共用体

匿名クラス、匿名構造体、匿名共用体は、拡張機能としてサポートされています。また、匿名構造体、および匿名共用体は、C および C++ でサポートされています。

デフォルトでは、匿名共用体は C++ で使用できます。ただし、以下の場合は、anon_unions プラグマを指定する必要があります。

匿名共同体は、typedef の名前によって、それを保持するクラスに導入できます。この共用体は、実際の匿名共用体とは異なり、直接宣言する必要はありません。以下に例を示します。

typedef union
{
    int i, j;
} U;                 // U は再利用可能な匿名共用体を表す
#pragma anon_unions
class A
{
    U;               // OK -- A::i と A::j の参照が可能
};

この拡張機能によって、匿名クラスと匿名構造体を使用できます。ただし、C++ の機能が使用されていないことが条件です。例えば、スタティックデータメンバやメンバ関数、非公開メンバ、およびネストされている型(匿名クラス、匿名構造体、匿名共用体を除く)は、匿名クラスおよび匿構造体では使用できません。以下に例を示します。

#pragma anon_unions
struct A
{
    struct
    {
        int i, j;
    };               // OK -- i および j は
};                   // クラス A を通じて参照可能

int foo(int m)
{
    A a;
     a.i = m;
     return a.i;
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711