| 跳过导航链接 | |
| 退出打印视图 | |
|
Oracle Solaris Studio 12.3:C++ 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
匿名结构声明是既不声明结构标记也不声明对象或 typedef 名称的声明。C++ 中不允许匿名结构。
-features=extensions 选项允许使用匿名 struct 声明,但仅作为联合的成员。
以下代码是无效匿名 struct 声明示例,如果使用 -features=extensions 选项,可对其进行编译。
union U {
struct {
int a;
double b;
}; // invalid: anonymous struct
struct {
char* c;
unsigned d;
}; // invalid: anonymous struct
};
struct 成员的名称是可视的,没有 struct 成员名称的限定。如果该代码示例中提供了 U 的定义,则可以编写:
U u; u.a = 1;
匿名结构与匿名联合服从相同的限制。
请注意,可以通过为每个 struct 提供一个名称以使代码有效,例如:
union U {
struct {
int a;
double b;
} A;
struct {
char* c;
unsigned d;
} B;
};
U u;
U.A.a = 1;