3.6.3. 匿名类、结构和联合

支持将匿名类、结构和联合作为扩展。 C 和 C++ 中支持匿名结构和联合。

缺省情况下,可以在 C++ 中使用匿名联合。 但是,如果要使用以下内容,则必须指定 anon_unions 编译指示:

可通过 typedef 名称将匿名联合引入到包含类中。 与真正的匿名联合不同,不必直接对其进行声明。 例如:


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.

};

扩展也可以实现匿名类和匿名结构,但前提是它们没有 C++ 特性。 例如,不允许在匿名类和匿名结构中使用静态数据成员或成员函数、非公共成员以及嵌套类型(匿名类、结构或联合除外)。 例如:


#pragma anon_unions



struct A

{

    struct

    {

        int i, j;

    };               // Okay -- references to A::i and A::j are allowed.

};

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential