我读了这个问题,对我必须用我的代码做什么感到非常困惑。如果我的阅读是正确的,我下面的代码是未定义的,根据目前的标准。以下是我所需要的,我真的找不到更好的方法来做到这一点。使用左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