我有两个枚举。在[C]中将`enum`转换为其他`enum`是否有效?
enum A { A1=1, A2=2 }
enum B { B1=1, B2=2 }
这是否符合C标准?
A a = A1;
B b = a;
(铿锵编译好了,但是我不知道这是标准的或扩展行为)
我有两个枚举。在[C]中将`enum`转换为其他`enum`是否有效?
enum A { A1=1, A2=2 }
enum B { B1=1, B2=2 }
这是否符合C标准?
A a = A1;
B b = a;
(铿锵编译好了,但是我不知道这是标准的或扩展行为)
这是有效的标准,但是C99规范提到,一些实现可能会生成一个警告:
实现可以产生在许多情况下,它们都没有被指定为该国际标准的一部分警告。以下是一些更常见的情况。
- 的值被给定为比枚举常数的分配其他枚举类型是该类型的成员,或具有相同类型的枚举变量或函数的值的一个对象,该返回相同的枚举类型(6.7.2.2)。
我相信,在C枚举基本int
s的个性。 (与C++完全不同的是C++)。因此,分配不同的enum
s仍然只与int
一起工作,因此它是合法的。但是,我并不是说这是推荐:)
它是有效的标准C但它是一个坏主意。请注意,它是而不是有效的C++。
有效 - 枚举这是旨在帮助开发人员的语言功能。如果您不指定枚举项值的值,它会自动生成。 From another language。