我们可以在C中使用具有不同枚举标记的多个常量吗?

时间:2014-01-19 04:11:09

标签: c enums

我有以下代码:

enum tag1 {
 n1, n2, n3
};

enum tag2 {
 n4, n5, n1
};

现在,我收到了一个错误,n1被使用了两次

所以我的问题是当枚举常量没有范围时,enum tags的用法是什么。

2 个答案:

答案 0 :(得分:3)

不,你不能这样使用它。 “C”中的枚举不是强类型。

使用枚举可以提高抽象级别,让程序员思考值的含义,而不是担心它们的存储和访问方式。这减少了错误的发生。

Enums有这些好处:

  • 它们限制了枚举变量可以采用的值
  • 它们会强迫您考虑枚举可以采用的所有可能值。
  • 它们是常数而不是数字,增加了源代码的可读性

答案 1 :(得分:1)

您可以使用enum代码声明相应enum类型的变量,而无需使用typedef

enum tag1 varName = n5;

不幸的是,没有办法让几个enum在同一个翻译单元中共享一个成员。显然,您可以在不同的标头中定义两个enum,并充分利用它们,只要这两个标头不包含在同一个C文件中。