union的作用域
最近在学习的时候,发现union的作用域居然也有些特殊,在这里简单介绍
匿名union
作用域
int main() {
union {
int a;
bool b;
};
a = 1;
printf("union -> a: %d\n", a);
return 0;
}
union -> a: 1
匿名作用域其属性是全局的,可以被直接访问得到;在这一点上有点类似于enum
全局匿名union
static union {
int a;
bool b;
};
int main() {
a = 1;
printf("union -> a: %d\n", a);
return 0;
}
如果是全局的匿名联合体,则必须是static
的;将作用于限制在本文件
枚举类
顺带介绍一下枚举类
enum {
a,
b,
};
int main() {
printf("union -> a: %d\n", a);
return 0;
}
enum
的命名空间和union
是类似的
枚举类
enum class test_enum {
a,
b,
};
int main() {
printf("union -> a: %d\n", test_enum::a);
return 0;
}
可以限制一下作用域
网友评论