Перейти к содержанию
    

Как правильно избавиться от предупреждения [-Wincompatible-pointer-types]

warning: incompatible pointer types passing 'unsigned short (*)[]' to parameter of type 'unsigned char *' [-Wincompatible-pointer-types]

crc = Crc16(&SPI3_RX_buf, ((sizeSpiBuff >> 1) - 2));

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваш SPI3_RX_buf является массивом, его имя неявно приводится к указателю на первый элемент. Вы же пытались брать адрес от массива, который есть указатель на массив, а такой указатель уже несовместим с указателем на unsigned char. Вам достаточно было сделать 

crc = Crc16(SPI3_RX_buf, ((sizeSpiBuff >> 1) - 2));

потому что указатель на unsigned short неявно приводится к указателю на unsigned char. Но более правильно объявить вашу Crc16 с первым параметром типа void const *, а приведение к unsigned char const * делать уже внутри функции - тогда можно будет передавать в функцию указатель на что угодно, потому что любой указатель неявно приводится к указателю на void (const и volatile можно пока не рассматривать).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...