smk 0 17 февраля, 2022 Опубликовано 17 февраля, 2022 · Жалоба warning: incompatible pointer types passing 'unsigned short (*)[]' to parameter of type 'unsigned char *' [-Wincompatible-pointer-types] crc = Crc16(&SPI3_RX_buf, ((sizeSpiBuff >> 1) - 2)); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
died_once 0 17 февраля, 2022 Опубликовано 17 февраля, 2022 · Жалоба Сделайте приведение типов crc = Crc16((unsigned char *)SPI3_RX_buf, ((sizeSpiBuff >> 1) - 2)); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 17 февраля, 2022 Опубликовано 17 февраля, 2022 · Жалоба Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 17 февраля, 2022 Опубликовано 17 февраля, 2022 · Жалоба Ваш 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 можно пока не рассматривать). 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться