Я работаю над проектом C firmware.У меня есть объединение, которое определяется как
typedef union {
unsigned long value;
unsigned char bytes[4];
} LONGVALUE;
У меня также есть функция с этим прототипом,
char sendHexToASCII_UART(char *msg, int cnt);
и переменная типа LONGVALUE, определенная как
LONGVALUE countAddr;
ПРОБЛЕМА: Я заполняю отдельные байты переменной объединения значениями из массива (tempBuff1), затем я хочу передать адрес первого элемента в объединении функции, которая напечатает его в UART,При вызове функции sendHexToASCII_UART((int *)countAddr.bytes[0], 4);
я получаю предупреждение компилятора, говорящее «приведение к указателю из целого числа разного размера».Может кто-нибудь объяснить, почему я получаю это и как я могу заставить его уйти?ПРИМЕЧАНИЕ: Изменение (int *) приведение к (char *) вызывает то же предупреждение.
countAddr.bytes[0] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS];
countAddr.bytes[1] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS + 1];
countAddr.bytes[2] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS + 2];
countAddr.bytes[3] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS + 3];
sendHexToASCII_UART((int *)countAddr.bytes[0], 4);