【发布时间】:2019-05-24 04:43:10
【问题描述】:
假设我有一个列出所有人员的主枚举:
typedef enum all_personnel {
// male
TONY,
MIKE,
JIM,
// female
JESSICA,
MARY,
} all_personnel_t;
现在我想为男性和女性定义另外两个枚举(例如,因为某些函数只接受男性或女性枚举参数),但我想使用与主枚举中相同的名称标识符。在 C/C++ 中可能吗?还是有其他方法?
似乎以下不起作用(编译器抱怨redeclaration of enumerator ‘TONY’等:
typedef enum male_personnel {
TONY,
MIKE,
JIM,
} male_personnel_t;
【问题讨论】:
-
你想用 C 还是 C++ 做这个?
-
在 C 中,任何
enum类型中的枚举常量必须与范围内所有其他enum类型中的所有其他枚举常量不同——除非您在函数内重新定义类型,这可能不是您想要做的。枚举常量在ordinary identifiers命名空间中,还有变量名、类型名、函数名等。