What is the differnce between UInt8
and uint8_t
, or UInt16
and unit16_t
?
What does the _t
imply?
What is the differnce between UInt8
and uint8_t
, or UInt16
and unit16_t
?
What does the _t
imply?
在 C99 中,可用的基本整数类型(没有 _t 的)被认为是不够的,因为它们的实际大小可能因不同系统而异。
因此,C99 标准包括了几种新整数类型的定义,以增强程序的可移植性。新类型在嵌入式环境中特别有用。
所有新类型都以 _t 为后缀,并保证在所有系统中统一定义。
有关更多信息,请参阅关于 Stdint 的维基百科文章的固定宽度整数类型部分。
主要区别在于uintX_t
类型是由 C99 和更高版本定义的标准 C,而UIntX
不是。这对代码的可移植性有影响。使用uintX_t
类型的代码可以在任何标准 C 编译器上编译,而无需任何其他依赖项。UIntX
另一方面,使用的代码必须自己定义这些类型,或者依赖于这样做的某个库或框架。
我不认为 Objective-C 本身定义了任何额外的整数类型,但很可能是您的框架(Coacoa、OpenStep?)这样做了。如果您的代码在框架之外没有意义,请使用框架上下文中的惯用代码。否则尝试坚持标准类型。
通常它们被用作 typedef 数据类型。“_t”代表 typedef 数据类型。我们给出这样的名称,以便它们可以在所有文件或庞大的代码库中轻松使用和阅读。
*UInt8 和 uint8_t - 字符*
typedef unit8_t unsigned char
*UInt16 和 unit16_t*
typedef unit16_t unsigned int(在 16 位编译器上)