类似memset, memcpy这种用途,还是应该用char。这里char并不是“字符类型”或者“整型”,而是“内存单元”。一个buffer的类型如果不是char*那应该是什么呢?
如果这里用u8,遇到像你说这种内存单元不是8位的就真错误了。而用signed/unsigned char的话,理论上有可能平台只能高效支持其中一种,另一种较低效。我想这也是C标准里char不默认为有符号的原因。
【 在 feiy 的大作中提到: 】
: 所以,规范公司和有经验的工程师都会拒绝用单独一个char(plain char),都会定义一套u8 s8 u16 s16之类的使用。
: 但现实里,却是有不少工程师有时会无意该地夹杂用char来表示他所本意的signed 8-bit,而且认为没错无问题。有时候,编译器会给warning,有时候未必会给warning(前面有人说char a=-5;很易被warning,但若-5是隐性计算出来的呢,编译器本身也并不总是很聪明),有很多人面对一大堆warning也习惯于忽略无视。
: 不是说一定会出问题bug,做多开发经验有了,一般基本都会遇到。
: ...................
--
修改:ilovecpp FROM 114.86.93.*
FROM 114.86.93.*