是否在[C]中向其他`enum`强制转换`enum`?

Eon*_*nil 7 c standards enums casting

我有两个枚举.

enum A { A1=1, A2=2 }

enum B { B1=1, B2=2 }
Run Code Online (Sandbox Code Playgroud)

这是否符合C的标准?

A a = A1;
B b = a;
Run Code Online (Sandbox Code Playgroud)

(与Clang编译得很好,但我不能确定这是标准还是扩展行为)

Car*_*rum 6

它符合标准,但C99规范提到某些实现可能会生成警告:

实施可能会在许多情况下产生警告,其中没有一个被指定为本国际标准的一部分.以下是一些较常见的情况.

  • 赋值为枚举类型的对象,而不是通过赋值该类型的成员的枚举常量,或具有相同类型的枚举变量,或返回相同枚举类型的函数的值( 6.7.2.2).