Sou*_*men 6 c linux linux-kernel
在浏览linux网络代码时,我遇到了以下数据类型:
- U8
- uint8_t
- __u8
- __be8
(16,32和64位相同的东西)
有人可以解释这些数据类型和使用位置之间的区别吗?我已经看到了这些数据类型的定义,但这些对我来说并不清楚.
M.M*_*M.M 10
uint8_t是标准C,表示无符号8位整数类型.如果您所在的系统没有8位可寻址单元,那么这将不会被定义; 否则它可能是一个typedef为unsigned char.
其中的任何内容__都保留供实现使用.这意味着编译器编写者和标准库编写者可以使用这些标识符,而无需担心与用户代码的名称冲突.在查看标准库实现的内部时,您可能会看到这一点.
u8是非标准的,但几乎肯定意味着相同uint8_t.u8可能使用的原因是之前编写的代码uint8_t已添加到标准C中.