使用联合中的结构作为函数参数传递

时间:2018-12-22 07:22:17

标签: c unions

我正在阅读有关union成员(Section 6.5.2.3p(9))的N1570标准,并遇到以下示例:

  

以下不是有效的片段(因为联合类型不是   在函数f)中可见:

struct t1 { int m; };
struct t2 { int m; };
int f(struct t1 *p1, struct t2 *p2)
{
    if (p1->m < 0)
        p2->m = -p2->m;
    return p1->m;
}
int g()
{
    union {
        struct t1 s1;
        struct t2 s2;
    } u;
    /* ... */
    return f(&u.s1, &u.s2);
}

因此,我自己尝试了一下,发现它可以正常编译:DEMO

为什么无效?它是不确定的行为吗?你能解释一下吗?

0 个答案:

没有答案