предупреждение 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);