1

我正在尝试理解一些开源代码

我遇到了类似于

enum {
   Thing1,
   Thing2,
};

我想知道这个枚举是如何工作的?它没有名称或 typedef

实际的代码行可以第 125 - 128 行找到

4

2 回答 2

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!
};
}
于 2013-10-16T09:06:57.420 回答
1

这种结构可用于实际值不感兴趣且唯一要求是常量值不同的命名常量。

于 2013-10-16T09:05:08.253 回答