-1

考虑以下代码:

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

如果这里有一个有效的警告,它是什么?

4

2 回答 2

3

b = &f.b;尝试将 a 分配blah**bb = f.b;改为使用

于 2012-12-20T09:55:11.003 回答
1
struct blah {
    int x;
    int y;
};

struct foo {
    union {
        struct {
            struct blah b;
        };
    };
};

您正在引用b它已经是一个指针。

于 2012-12-20T09:58:15.163 回答