У меня есть функция uint8_t EE_Write(uint8_t addr, uint8_t len, uint8_t * buf)
, которая принимает указатель на некоторые данные, которые он запишет в память, и uint16_t myword
, который я хочу передать.Базовый
EE_Write(0,sizeof(myword),&myword);
выдает мне предупреждение компилятора «Переадресация на разные типы (« unsigned int * const »вместо« unsigned char * const »)», даже если я приведу слово (int) к байту(char), я получил точно такое же предупреждение (и никакое количество группировок с круглыми скобками не помогло).
EE_Write(0,sizeof(myword),&(uint8_t)myword);
Предупреждения исчезают с объединением, но глупо писать его в другую переменную только для того, чтобыосчастливить компилятор.
union catbyte {
uint16_t w;
uint8_t b[2];
};
union catbyte mybytes;
mybytes.w = myword;
EE_Write(0,sizeof(myword),mybytes.b);