我想了解一些开源代码
我遇到了一行类似
的代码enum {
Thing1,
Thing2,
};
我想知道这个枚举是如何工作的?它没有名称或typedef
在第125 - 128行
中可以找到实际的代码行here答案 0 :(得分:3)
这是一个传统的匿名枚举。传统的枚举将其符号导出到封闭的命名空间:
namespace a{
enum {
Thing1, // a::Thing1
Thing2, // a::Thing2
};
}
因此,在这个匿名枚举中,您不需要指定枚举名称来保留其成员,但由于将符号导出到封闭命名空间的行为,它可能导致名称冲突:
namespace a{
enum {
Thing1, // a::Thing1
Thing2, // a::Thing2
};
enum namedEnum {
Thing1, // Error!
Thing2, // Error!
};
}
答案 1 :(得分:1)
这种结构可以用于命名常量,其中实际值是无趣的,唯一的要求是常量的值不同。