为什么MSVC不报告重复的匿名工会成员中的错误?

时间:2016-04-29 01:09:13

标签: c++ visual-studio-2012 unions anonymous-class

我正在尝试构建以下代码:

#include <stdint.h>

int main()
{
    union {
        uint32_t cw            : 13;

        struct {
            uint32_t setting4  : 4;
            uint32_t cmd       : 9;
        };

        struct {
            uint32_t setting8  : 8;
            uint32_t cmd       : 5;
        };
    } control;

    return 0;
}

定义了一个13位代码字,它由几个具有重叠解释的字段组成。

由于两个结构中cmd字段的重复声明,我希望构建失败。令人惊讶的是,MSVC 2012没有报告错误。

作为一项完整性检查,我在ideone.com中测试了代码,但确实出现了错误。

注意:在为cw分配值后运行代码并打印字段内容时,cmd会解析为第一个(9位)成员。

0 个答案:

没有答案