предупреждение makes pointer from integer without a cast

Получаю предупреждение при передачи адреса в функцию. Предупреждение

warning: passing argument 1 of 'writeFlashBuffer' makes pointer from integer without a cast [-Wint-conversion] 

Функция имеет вид

void writeFlashBuffer(uint8_t *pBuffer, uint32_t NumberSector, uint32_t addrBegin, uint32_t Size);

вид вызова функции

writeFlashBuffer(*(uint8_t*)&addr, sector, 0, 1024);

где тип перемеренной

addr - это uint32_t
sector - это uint32_t

если добавить uint8_t*

writeFlashBuffer((uint8_t*)*(uint8_t*)&addr, sector, 0, 1024);

то предупреждение меняется на

warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

Ответы (1 шт):

Автор решения: KoVadim

Присмотритесь сюда

writeFlashBuffer(*(uint8_t*)&addr, sector, 0, 1024);

Вы первым параметром передаете *(uint8_t*)&addr. Разворачиваем справа на лево. У целочисленной переменной берем адрес, кастуем к нужному типу а потом разыменовываем . По факту вернулись к тому, с чего начали.

writeFlashBuffer хочет адрес буфера.

Поэтому, возможно, правильный вызов выглядит так

writeFlashBuffer(&addr, sector, 0, 1024);

если addr - это именно данные.

но если addr содержит именно адрес (странно, но чего в си не бывает), то тогда вызов выглядит так

writeFlashBuffer((uint8_t*)addr, sector, 0, 1024);
→ Ссылка