通过无符号整数读取无符号字符数组未定义,因此不安全



我读了这个问题,对我必须用我的代码做什么感到非常困惑。如果我的阅读是正确的,我下面的代码是未定义的,根据目前的标准。以下是我所需要的,我真的找不到更好的方法来做到这一点。使用左shift OR绝对不是我想要的。这样就可以了吗?

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

union Pixel {
    unsigned char rgb[4];
    uint32_t n;
    Pixel():
    n(0) {}
};

这是c++中比遵循标准更容易检查编译器正在做什么的部分之一。据我所知,大多数编译器仍然按照您的期望(MSVC、GCC、CLANG)工作。你在想什么深奥的东西吗?

在下面的链接中提到Sun c++编译器不能工作:

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

相关内容

最新更新