Export (0) Print
Expand All
7 out of 10 rated this helpful - Rate this topic

Anonymous Unions

Anonymous unions are unions that are declared without a class-name or declarator-list.

union  {  member-list  }  

Such union declarations do not declare types — they declare objects. The names declared in an anonymous union cannot conflict with other names declared in the same scope.

In C, an anonymous union can have a tag; it cannot have declarators.

Names declared in an anonymous union are used directly, like nonmember variables.

In addition to the restrictions listed in Union Member Data, anonymous unions are subject to additional restrictions:

  • They must also be declared as static if declared in file scope. If declared in local scope, they must be static or automatic.

  • They can have only public members; private and protected members in anonymous unions generate errors.

  • They cannot have function members.


    Simply omitting the class-name portion of the syntax does not make a union an anonymous union. For a union to qualify as an anonymous union, the declaration must not declare an object.

// anonymous_unions.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
int main() {
   union {
      int d;
      char *f;

   d = 4;
   cout << d << endl;

   f = "inside of union";
   cout << f << endl;


inside of union
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

© 2014 Microsoft. All rights reserved.