是通过未定义的无符号整数读取unsigned char数组,因此不安全吗?

时间:2015-05-28 19:14:51

标签: c++ language-lawyer undefined-behavior

我读了this个问题,对我的代码处理方式感到非常困惑。如果我的阅读正确,我的代码根据当前标准是不确定的。以下是我需要的一切,我真的找不到更好的方法来做到这一点。使用OR左移绝对不是我想要的。这样离开就好了吗?

编辑:是的,我在设置n而不是n的值后正在阅读rbg

union Pixel {
    unsigned char rgb[4];
    uint32_t n;

    Pixel():
    n(0) {}
};

1 个答案:

答案 0 :(得分:2)

这是C ++的一个部分,它比检查标准更容易检查编译器正在做什么。据我所知,大多数编译器仍然按照您的预期进行(MSVC,GCC,CLANG)。你在想一些深奥的东西吗?

在以下链接中,提到Sun C ++编译器不起作用:

http://blog.regehr.org/archives/959