【发布时间】:2020-05-08 16:31:53
【问题描述】:
如果您的代码中需要一些常量,您可以使用枚举声明它们:
enum {
DOG,
CAT,
FISH,
};
enum {
CAR,
BUS,
TRAIN,
};
然后根据需要使用DOG、BUS 等。但是枚举也可以以更冗长的方式声明:
enum animals {
DOG,
CAT,
FISH,
} pets;
enum transport {
CAR,
BUS,
TRAIN,
} vehicles;
鉴于枚举常量具有全局范围并且不能像结构和联合那样被pets.DOG 引用,那么详细样式有什么好的用例吗?对我来说,枚举的类型标签和变量名看起来相当多余,甚至令人反感,因为它们看起来像结构,但不能像结构一样使用。我希望我遗漏了一些东西,它们确实有很好的用途。
有一个相关的SO Q&A,其中最重要的假设是在使用枚举时会使用类型标签和变量名。所以我的问题可以重述为“如果我只使用匿名枚举,我会在哪些任务中失败?”因为对我来说,枚举的全部意义在于DOG、CAT、CAR 常量,我认为将其中之一分配给枚举变量是没有用的。我还在学习,所以我确定我一定遗漏了一些东西。
【问题讨论】:
-
@Ctx 请澄清!据我了解和我的测试显示,枚举常量必须具有唯一的名称。我不明白“两个枚举......不同的值......不同的上下文”真正指的是什么。
-
好的,使用枚举这确实是不可能的
-
不确定我是否完全理解您的问题,但您使用枚举标签的原因是为了能够稍后引用它(例如,定义枚举类型的变量) - 参考.例如。 Why do C enumeration constants need a name?.
-
或者你问为什么要定义枚举类型变量?
-
@SanderDeDycker 我问的是类型和变量的可用性。正如我的问题所述,我的印象是枚举对于它们声明的常量很有用。常量是全局的并且必须是唯一的——那么类型和变量有什么用呢?一个完整的答案将不胜感激。
标签: c enums declaration