通过未定义的无符号整数读取无符号字符数组是否不安全?
Is reading an unsigned char array through an unsigned integer undefined and thus not safe?
我阅读了 this 问题,对我必须用我的代码做什么感到非常困惑。如果我的阅读是正确的,那么根据当前标准,我下面的代码是未定义的。以下是我需要的一切,我真的找不到更好的方法来做到这一点。将左移与 OR 一起使用绝对不是我想要的。就这样放着就好了吗?
编辑:是的,我在设置 rbg
而不是 n.
的值后阅读 n
union Pixel {
unsigned char rgb[4];
uint32_t n;
Pixel():
n(0) {}
};
这是 C++ 的一部分,它比遵循标准更容易检查您的编译器在做什么。据我所知,大多数编译器仍然按照您的期望进行操作(MSVC、GCC、CLANG)。你在想什么深奥的东西吗?
在下面link 中提到 Sun C++ 编译器不工作:
我阅读了 this 问题,对我必须用我的代码做什么感到非常困惑。如果我的阅读是正确的,那么根据当前标准,我下面的代码是未定义的。以下是我需要的一切,我真的找不到更好的方法来做到这一点。将左移与 OR 一起使用绝对不是我想要的。就这样放着就好了吗?
编辑:是的,我在设置 rbg
而不是 n.
n
union Pixel {
unsigned char rgb[4];
uint32_t n;
Pixel():
n(0) {}
};
这是 C++ 的一部分,它比遵循标准更容易检查您的编译器在做什么。据我所知,大多数编译器仍然按照您的期望进行操作(MSVC、GCC、CLANG)。你在想什么深奥的东西吗?
在下面link 中提到 Sun C++ 编译器不工作: