Sun Studio 12:C 用户指南

诸如 unintptr_t 的有用类型

<inttypes.h> 文件包括大小足以容纳一个指针的带符号整型和无符号整型。这些类型以 intptr_tuintptr_t 形式提供。此外,<inttypes.h> 还提供 intmax_tuintmax_t,后两者是可用的最长(以位为单位)带符号整型和无符号整型。

使用 uintptr_t 类型作为指针的整型而非基本类型,如无符号 long。尽管在 ILP32 和 LP64 数据模型中,无符号 long 与指针的长度相同,但如果使用 uintptr_t,在数据模型更改时,只有 uintptr_t 的定义受影响。这使您的代码可移植到许多其他系统中。它也是在 C 中更清楚地表达意图的方式。

需要执行地址运算时,intptr_tuintptr_t 类型对于强制转换指针非常有用。因此,应使用 intptr_tuintptr_t 类型,而不是 long 或无符号 long