8.35 Anonymous classes, structures and unions

Anonymous classes, structures, and unions are supported as an extension. Anonymous structures and unions are supported in C and C++.

Anonymous unions are available by default in C++. However, you must specify the anon_unions pragma if you want to use:
  • Anonymous unions and structures in C.
  • Anonymous classes and structures in C++.
An anonymous union can be introduced into a containing class by a typedef name. Unlike a true anonymous union, it does not have to be declared directly. For example:
typedef union
{
    int i, j;
} U;                 // U identifies a reusable anonymous union.
#pragma anon_unions
class A
{
    U;               // Okay -- references to A::i and A::j are allowed.
};
The extension also enables anonymous classes and anonymous structures, as long as they have no C++ features. For example, no static data members or member functions, no nonpublic members, and no nested types (except anonymous classes, structures, or unions) are allowed in anonymous classes and anonymous structures. For example:
#pragma anon_unions
struct A
{
    struct
    {
        int i, j;
    };               // Okay -- references to i and j 
};                   // through class A are allowed.
int foo(int m)
{
    A a;
     a.i = m;
     return a.i;
}
Related reference
9.72 #pragma anon_unions, #pragma no_anon_unions
Non-ConfidentialPDF file icon PDF versionARM DUI0375E
Copyright © 2007, 2008, 2011, 2012, 2014 ARM. All rights reserved.