以下是给定内容:
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;
如果没有显式转换,这会导致不兼容类型错误。有没有什么方法可以避免显式转换?
transparent_union
只有在向函数传递参数时才是透明的。GCC文档对此非常明确。 - n. m.