Я получаю это предупреждение за свою логику -
Логика:
uint8_t *m_data;
uint32_t* datap = (uint32_t*)m_data;
Предупреждение:
Info 826: Suspicious pointer-to-pointer conversion (area too small)
Так как требуется, чтобы придать значение при назначении.. И я не чувствую, что что-то не так в данной строке кода. Как я могу подавить это предупреждение или удалить его из сборки
Это не правильный выбор, вы пытаетесь интерпретировать указатель на байт как указатель на 4 байта и приводить к неожиданным результатам. Если uint32_t
имеет разные требования к выравниванию, чем uint8_t
, вы можете получить другое значение указателя, а также то, на что оно указывает. Если вы хотите преобразовать значение, просто выполните:
uint32_t datap;
datap = static_cast<uint32_t>(*m_data);
datap
не является указателем.
m_data
указывает на то, что имеет только 8-m_data
пространство, почему вы хотите указать на него, как если бы оно было 32-битным?