Я не уверен, как исправить предупреждение для этой части кода (предупреждение относится ко второй строке). Это не мой код, но он отлично работает. Тем не менее, я хотел бы избавиться от предупреждения, но я смущен. v является unsigned long, который мы хотим поместить в указатель. Мы работаем с avr-gcc.avr-gcc предупреждение: инициализация от несовместимого указателя типа
../../uJ/uj.c:1149:20: предупреждение: инициализации из несовместимых указатель типа сопзЬ Uint8 * d = & v;
static void ujThreadPrvPut32(UInt8* ptr, UInt32 v){ //to pointer
const UInt8* d = &v;
*ptr++ = *d++;
*ptr++ = *d++;
*ptr++ = *d++;
*ptr = *d;
}
Указатели в C относятся к конкретному типу, то есть d ++ пропускают 1 байт, аргумент v составляет 4 байта. Компилятор не может понять, чего вы хотите. Ниже приведен хороший ответ с приложением –