如何修复类型惩罚指针警告

时间:2014-10-24 16:38:03

标签: c++ type-conversion reinterpret-cast type-punning

我有以下内容:(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类型的联合会更好吗? (如何?)

0 个答案:

没有答案