鉴于以下情况:
typedef struct{
...
...
} A;
typedef struct{
...
...
} B;
typedef union __attribute__((transparent_union)) {
A a;
B b;
} C;
如果我声明一个函数
myMethod(C){
...
}
以下是合法的,没有明确的强制转换:
A myA;
B myB;
meMethod(myA);
myMethod(myB);
(来自:“ c unions and polymorphism ”)
但是,为什么不允许以下情况:
C cArray[2];
c[0]=myA;
c[1]=myB;
这会在没有显式转换的情况下给出不兼容的类型错误。有什么办法可以避免显式转换?