61

What is the differnce between UInt8 and uint8_t, or UInt16 and unit16_t?

What does the _t imply?

4

3 回答 3

59

在 C99 中,可用的基本整数类型(没有 _t 的)被认为是不够的,因为它们的实际大小可能因不同系统而异。

因此,C99 标准包括了几种新整数类型的定义,以增强程序的可移植性。新类型在嵌入式环境中特别有用。

所有新类型都以 _t 为后缀,并保证在所有系统中统一定义。

有关更多信息,请参阅关于 Stdint 的维基百科文章的固定宽度整数类型部分

于 2013-06-05T10:43:47.363 回答
1

主要区别在于uintX_t类型是由 C99 和更高版本定义的标准 C,而UIntX不是。这对代码的可移植性有影响。使用uintX_t类型的代码可以在任何标准 C 编译器上编译,而无需任何其他依赖项。UIntX另一方面,使用的代码必须自己定义这些类型,或者依赖于这样做的某个库或框架。

我不认为 Objective-C 本身定义了任何额外的整数类型,但很可能是您的框架(Coacoa、OpenStep?)这样做了。如果您的代码在框架之外没有意义,请使用框架上下文中的惯用代码。否则尝试坚持标准类型。

于 2013-06-05T11:03:43.150 回答
0

通常它们被用作 typedef 数据类型。“_t”代表 typedef 数据类型。我们给出这样的名称,以便它们可以在所有文件或庞大的代码库中轻松使用和阅读。

*UInt8 和 uint8_t - 字符*

typedef unit8_t unsigned char

*UInt16 和 unit16_t*

typedef unit16_t unsigned int(在 16 位编译器上)

于 2013-06-05T10:48:26.767 回答