我正在研究 C 固件项目。我有一个定义为的工会,
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);