背景:我正在接收一个数组作为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