考虑以下代码:
struct blah {
int x;
int y;
};
struct foo {
union {
struct {
struct blah *b;
};
};
};
int main()
{
struct foo f;
struct blah *b;
// Warning on below assignment
b = &f.b;
return 0;
}
assignment from incompatible pointer type
尽管 LHS 和 RHS 属于同一类型(显然),为什么 GCC 会生成警告?IOW,struct blah
嵌套在里面时会发生什么变化struct foo
?
如果这里有一个有效的警告,它是什么?