C++ UInt8和UInt8的区别是什么

C++ UInt8和UInt8的区别是什么,c++,objective-c,c,C++,Objective C,C,UInt8和UInt8\u t,或者UInt16和unit16\u t之间有什么区别 \u t意味着什么?在C99中,可用的基本整数类型(没有_t的类型)被认为是不够的,因为它们的实际大小可能在不同的系统中有所不同 因此,C99标准包含了几种新整数类型的定义,以增强程序的可移植性。新类型在嵌入式环境中特别有用 所有新类型都以_t作为后缀,并保证在所有系统中统一定义 有关更多信息,请参阅 通常它们用作typedef数据类型。“_t”代表typedef数据类型。 我们给出这样的名称,以便在所有文件或

UInt8
UInt8\u t
,或者
UInt16
unit16\u t
之间有什么区别


\u t
意味着什么?

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

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


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


有关更多信息,请参阅

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

*UInt8和UInt8_t-Char*

typedef unit8\t无符号字符

*UInt16和unit16\u t*


typedef unit16\u t unsigned int(在16位编译器上)

主要区别在于
uintX\u t
类型是C99和更高版本定义的标准C,而
uintX
则不是。这意味着代码的可移植性如何。使用uintX\u t类型的代码可以在任何标准C编译器上编译,而无需任何其他依赖项。另一方面,使用UIntX的代码必须自己定义这些类型,或者依赖于这样做的库或框架


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

\u t
=标准数据类型的跨平台实现。我认为
\u t
代表
类型
,它是Linux系统上以及
C
C++
标准中许多地方使用的约定。
Uint8
Uint8\u t
之间的差异取决于实现,但通常它们都是8位无符号整数。另外,据我所知,
uint8
uint16
是由C(可能是C++)标准在
stdint.h
标题中定义的,
uint8
uint16
是非标准的。
uint8
uint16
确实是C99的一部分。也就是说,对固定大小的需求早于C99,因此不同的代码库通过提供自己的类型来满足这一需求。OSX在/usr/include/MacTypes.h中定义了
UInt8
UInt16
。“所有新类型都有一个后缀,并保证在所有系统中统一定义。”这不是真的,有
(u)int\u leastN\t
(u)int\u fastN\u t
。你指的是固定宽度的类型。实际上,我并不是说所有系统的尺寸都是一样的。如您所述,实际尺寸仅保证固定宽度(精确宽度)类型的尺寸一致。但是,所有系统的定义都是相同的。例如,int_leastN_t被定义为实现中可用的最小类型。无论系统如何,定义都是相同的。