C++枚举一步一步

rwa*_*ace 4 c c++

我试图在C++中编写相当于枚举的枚举,而不是一个,比如说

enum
{
    foo,
    bar = 8,
    baz = 16,
};
Run Code Online (Sandbox Code Playgroud)

将会有很多条目,每隔一段时间会添加新的条目,为了清楚起见,它们确实希望以不同于输入顺序的顺序编写,因此不必手动更新所有数字.我已经尝试过使用宏预处理器技巧,但到目前为止还没有骰子.有没有办法做到这一点,我忽略了?

Pav*_*aev 25

#define NEXT_ENUM_MEMBER(NAME) \
    NAME##_dummy, \
    NAME = NAME##_dummy - 1 + 8

enum MyEnum {
   Foo,
   NEXT_ENUM_MEMBER(Bar),
   NEXT_ENUM_MEMBER(Baz),
   ...
};
Run Code Online (Sandbox Code Playgroud)


Lee*_*win 8

我更喜欢这样的东西:

enum {
    foo = (0 << 3),
    bar = (1 << 3),
    baz = (2 << 3),
};
Run Code Online (Sandbox Code Playgroud)

它不是自动化的,但在添加新的枚举常量时不需要太多思考.