我正在开发C固件项目。我有被定义为并集,帮助铸造指向工会的指针
typedef union {
unsigned long value;
unsigned char bytes[4];
} LONGVALUE;
我也有具有该原型的功能,
char sendHexToASCII_UART(char *msg, int cnt);
和定义为类型的longValue的变量,
LONGVALUE countAddr;
THE问题: 我使用数组中的值填充联合变量的各个字节(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);
然后我得到:'警告:指针目标在通过“sendHexToASCII_UART”的说法1现在signedness' – PICyourBrain 2010-10-06 11:17:30
更新应答不同...... – 2010-10-06 11:20:27
我改变到(无符号字符*),我仍然得到相同的'不同sidnedness'警告 – PICyourBrain 2010-10-06 11:23:16