没有typedef或名称的枚举

时间:2013-10-16 09:02:21

标签: c++ c contiki

我想了解一些开源代码

我遇到了一行类似

的代码
enum {
   Thing1,
   Thing2,
};

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

在第125 - 128行

中可以找到实际的代码行here

2 个答案:

答案 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)

这种结构可以用于命名常量,其中实际值是无趣的,唯一的要求是常量的值不同。