我的 cast 行代码中有此警告:
dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict- aliasing]
unsigned char buffer[64];
...
unsigned int value = *(unsigned int*)buffer;
如何解决这个警告?
感谢您的帮助!
最佳答案
此代码的作用取决于平台的字节序、对齐规则、整数大小和其他因素。仅仅通过观察是无法知道它的作用的。但您可能想要这样的东西:
unsigned int value = buffer[0];
value = (value << 8) | buffer[1];
value = (value << 8) | buffer[2];
value = (value << 8) | buffer[3];
关于C++ 生成警告 : dereferencing type-punned pointer will break strict-aliasing rules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634529/