我正在開發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