枚举的组成

gre*_*det 2 c

有没有办法在C中制作多个枚举的组合?我希望有一个将在其他枚举中使用的公共枚举.

例如,我想写下面的代码:

enum common_e {
   COMMON_LITERAL_0,
   COMMON_LITERAL_1
}

enum first_e {
   common_e, // <- Somehow I would like to have the two common_e's literals here
   FIRST_LITERAL_0,
}

enum another_e {
   common_e, // <- Somehow I would like to have the two common_e's literals here
   ANOTHER_LITERAL_0,
   ANOTHER_LITERAL_1
}
Run Code Online (Sandbox Code Playgroud)

我关心的是在子动画中将普通文字保持为相同的顺序,因为它们被用作函数指针数组的ID.

有没有解决方案呢?

Oli*_*rth 6

enums不是命名空间,因此您不能拥有两个具有相同名称的枚举器.所以不,即使使用预处理器或其他魔法,也无法做到这一点.

如果你只是想让枚举值继续保留常见的值,那么如何:

enum common_e {
    COMMON_LITERAL_0,
    COMMON_LITERAL_1,
    COMMON_LITERAL_END__
};

enum first_e {
    FIRST_LITERAL_0 = COMMON_LITERAL_END__,
    FIRST_LITERAL_1
};
Run Code Online (Sandbox Code Playgroud)