UInt8
和uint8_t
,或UInt16
和unit16_t
之间有什么区别?
_t
意味着什么?
答案 0 :(得分:38)
在C99中,可用的基本整数类型(没有_t的那些)被认为是不够的,因为它们的实际大小可能因不同系统而异。
因此,C99标准包含几种新整数类型的定义,以增强程序的可移植性。新类型在嵌入式环境中特别有用。
所有新类型都以_t为后缀,并保证在所有系统中统一定义。
有关详细信息,请参阅fixed-width integer types section of the wikipedia article on Stdint。
答案 1 :(得分:0)
通常它们用作typedef数据类型。 “_t”代表typedef数据类型。 我们提供这样的名称,以便它们可以在所有文件或庞大的代码库中轻松使用和阅读。
* UInt8和uint8_t - Char *
typedef unit8_t unsigned char
* UInt16和unit16_t *
typedef unit16_t unsigned int (在16位编译器上)
答案 2 :(得分:0)
主要区别在于uintX_t
类型是由C99定义的标准C,后来是UIntX
。这对代码的可移植性有影响。使用uintX_t
类型的代码可以在任何标准C编译器上编译,而不需要任何其他依赖项。另一方面,使用UIntX
的代码必须自己定义这些类型,或者依赖于这样做的库或框架。
我不认为Objective-C这样定义任何额外的整数类型,但很可能你的框架(Coacoa,OpenStep?)这样做。如果您的代码在框架之外没有意义,请使用框架上下文中的惯用语。否则尝试坚持标准类型。