请考虑以下代码:
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;
}
为什么GCC会产生assignment from incompatible pointer type
警告,尽管LHS和RHS属于同一类型(显然)? IOW,struct blah
嵌套在struct foo
内时会发生什么变化?
如果这里有一个有效的警告,它是什么?
答案 0 :(得分:3)
b = &f.b;
尝试将blah**
分配给b
。请改用b = f.b;
答案 1 :(得分:1)
struct blah {
int x;
int y;
};
struct foo {
union {
struct {
struct blah b;
};
};
};
您正在引用已经是指针的b
。