小编kal*_*der的帖子

为什么不同布局兼容类型的两个数组本身不兼容布局?

假设struct A和struct B布局兼容,为什么不A[N]和B[N]布局兼容?它的根本问题是什么?

在以下示例中,通过内部的第二个联合成员访问第一个联合成员会ub()导致未定义的行为。然而,在ok()行为上是明确定义的。

struct A { int i; }; // A and B are
struct B { int j; }; // layout-compatible

union C { A a;    B b;    };
union D { A a[3]; B b[3]; };

int ok() {
    C c { .a = 1 }; // ok, initialize c.a
    return c.b.j;   // ok, as if c.a.i were nominated
}

int ub() {
    D d …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer

9
推荐指数
0
解决办法
147
查看次数

标签 统计

c++ ×1

language-lawyer ×1