鉴于以下内容:
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;
这会在没有显式强制转换的情况下产生不兼容的类型错误。有没有办法避免显式铸造?
答案 0 :(得分:3)