为什么 C 中有这么多自定义数据类型?

Dan*_*vic 5 c variables custom-data-type

为什么有这么多自定义数据类型,如 socklen_t、ssize_t、size_t、uint16_t?我不明白他们的真正需要。对我来说,它们只是一堆需要学习的新变量名称。

tas*_*oor 4

意图和可移植性。

例如,假设我有一个变量unsinged n。一个无符号整数可以代表很多东西,所以它的意图并不明确。但当我写 时size_t n,很明显n代表某物的大小。当我写的时候socklen_t n很清楚n代表与套接字相关的东西的长度。

第二个原因是便携性。例如,socklen_t保证至少为 32 位。现在,如果我们只写,unsigned n那么大小n可能会小于 32 位。size_t可以保存任何对象的大小,但实际值是实现定义的。当我们使用普通整数时,可能会发生sizeof(int)无法容纳理论上可能的最大对象的大小。但使用size_t就不存在这样的可移植性问题。

uint16_t明确表示它是 16 位无符号整数,比使用unsigned intor既清晰又可移植unsigned short