我有以下内容:(HalfType = 32bit,Type = 64bit)
inline static HalfType getGroupNr(const Type & id){
Type id2 = id;
id2 >>= sizeof(HalfType)*8;
HalfType a = reinterpret_cast<HalfType &>(id2);
return a;
};
这应该提取64位输入id
的最后32位并返回这些32位。
如何修复此警告:
dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
上面代码中的确切问题是什么,并且使用id
类型的联合会更好吗? (如何?)