AFS*_*AFS 7 arrays polymorphism gcc unions
鉴于以下内容:
typedef struct{
...
...
} A;
typedef struct{
...
...
} B;
typedef union __attribute__((transparent_union)) {
A a;
B b;
} C;
Run Code Online (Sandbox Code Playgroud)
如果我声明一个函数
myMethod(C){
...
}
Run Code Online (Sandbox Code Playgroud)
以下是合法的,没有明确的转换:
A myA;
B myB;
meMethod(myA);
myMethod(myB);
Run Code Online (Sandbox Code Playgroud)
(来自:" c unions and polymorphism ")
但是,为什么以下不允许:
C cArray[2];
c[0]=myA;
c[1]=myB;
Run Code Online (Sandbox Code Playgroud)
这会在没有显式转换的情况下产生不兼容的类型错误.有没有办法避免显式铸造?