C++ 已知数据类型的含义

C++ 已知数据类型的含义,c++,c,linux-kernel,C++,C,Linux Kernel,可能重复: 有人知道“t”在时间、单位、单位等中代表什么吗?它是“类型”吗? 第二,为什么要声明这种新类型,例如size\u t,它不能仅仅是一个int吗?是的,t代表类型 定义新类型的原因是,它们可以在将来更改。由于64位机器已成为标准,因此实现可以将size\t的位宽度更改为64位,而不仅仅是32位。这是一种未来证明你的程序的方法。一些小型嵌入式处理器只能很好地处理16位数字。它们的大小\u t可能只有16位宽 一个特别重要的可能是ptrdiff\u t,它表示两个指针之间的差异。如果指针

可能重复:

有人知道“t”在时间、单位、单位等中代表什么吗?它是“类型”吗?
第二,为什么要声明这种新类型,例如size\u t,它不能仅仅是一个int吗?

是的,t代表类型

定义新类型的原因是,它们可以在将来更改。由于64位机器已成为标准,因此实现可以将
size\t
的位宽度更改为64位,而不仅仅是32位。这是一种未来证明你的程序的方法。一些小型嵌入式处理器只能很好地处理16位数字。它们的
大小\u t
可能只有16位宽

一个特别重要的可能是
ptrdiff\u t
,它表示两个指针之间的差异。如果指针大小在将来某个时候发生变化(比如说变为64位或128位),您的程序不应该在意

typedefs的另一个原因是风格。而这些大小可能只是由

typedef int size_t;

使用名称
size\t
清楚地表明变量意味着某个东西(容器、内存区域等)的大小。

我认为,它代表类型-一种可能是其他类型的类型定义的类型。因此,当我们看到
int
时,我们可以假设它不是任何类型的typedef,但当我们看到
uint32\u t
时,它很可能是某种类型的typedef。这不是一条规则,但我的观察是这样的,尽管有一个例外:
wchar\u t
不是任何其他类型的typedef,但它有
\u t
是的,它可能代表
type
typedef
之类的东西

这些
typedef
s之间的概念是,您确切地指定了该变量不是泛型
int
,而是一个对象的大小/自UNIX纪元以来的秒数/无论什么;此外,本标准还对这些类型的特性做出了具体保证

例如,
size\u t
保证包含您可以在C中创建的最大对象的大小,并且可以这样做的类型可以根据平台的不同而变化(在Win32上
无符号长
可以,在Win32上需要
无符号长
,而在一些内存非常小的微控制器上,
无符号短
就足够了)

至于各种
[u]intNN\u t
,它们是固定大小的整数类型:而对于“plain”
int
/
short
/
/
long
/…标准并不要求特定的大小,通常您需要一种类型,无论您在哪里编译程序,它都保证具有特定的大小(例如,如果您正在读取二进制文件);这些
typedef
s就是解决这个问题的方法。(顺便说一句,当您只需要一个最小的保证范围时,也有
typedef
s表示“至少有一些大小的最快整数”)