我收到了我的逻辑警告 -
逻辑:
uint8_t *m_data;
uint32_t* datap = (uint32_t*)m_data;
警告:
Info 826: Suspicious pointer-to-pointer conversion (area too small)
因为在赋值期间需要对值进行类型转换..而且我觉得在给定的代码行中没有错误。我可以抑制此警告或从构建中删除它
答案 0 :(得分:2)
这不是正确的强制转换,您试图将指向字节的指针解释为指向4个字节的指针,并可能导致意外结果。如果uint32_t
的对齐要求与uint8_t
不同,您甚至可能会获得指针的不同值以及指向的值。如果要转换该值,只需执行:
uint32_t datap;
datap = static_cast<uint32_t>(*m_data);