Учитывая следующее:
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-объединения и полиморфизм")
Однако почему нельзя:
C cArray[2];
c[0]=myA;
c[1]=myB;
Это дает ошибку несовместимого типа без явного приведения. Есть ли способ избежать явного приведения?
transparent_union
прозрачен только при передаче параметров в функции. Документация GCC очень подробно об этом говорит. - person n. 1.8e9-where's-my-share m.   schedule 23.05.2012