背景:我正在接收一個數組作爲char *作爲套接字會話的一部分。現在我們必須將Tokens(HTTP標頭)與它匹配。這裏的代碼是我們創建了一個UBYTE *並在用UBYTE進行類型轉換之後從char數組中獲取值。後來相同的UBYTE指針我們傳遞給其他函數,該函數在將它轉換爲char *後接受char *。char *和UBYTE *之間的類型轉換*(無符號字符*)
這裏的問題是在發佈版本中而不是在調試版本中(使用-g和不同的優化)。不僅如此,在調試模式下添加少量打印可以隱藏問題。
所以我的問題在這裏,UByte指針(它本質上是一個無符號字符)和字符指針有什麼區別。將UByte更改爲char可以解決所有模式中的問題,但我對此沒有任何解釋?有什麼想法嗎 ?
@R。,少許校正,unit8_t'的'存在是由POSIX執行小的寬度的整數,而不是由C. – 2010-07-14 08:47:33
Ç保證它的存在,如果一個8位整數類型存在。如果不存在8位類型,那麼定義自己的「UBYTE」也是不可能的。由於這個問題是關於處理HTTP頭的,所以目標幾乎可以肯定平臺能夠處理網絡數據單元(字節)。 「CHAR_BIT!= 8」真的是一個不值一提的病理學。除了永遠不會成爲便攜式程序目標的DSP和老式機器之外,它永遠不會發生。 – 2010-07-14 09:41:16
@R,他們將它命名爲UBYTE並不意味着它具有8的寬度。它僅顯示他們期望它是什麼。 – 2010-07-14 11:13:31