Solaris(64 位)开发者指南

长度增加的派生类型

许多派生类型已进行了更改,以便在 64 位应用程序环境中表示 64 位值。此更改不会影响 32 位应用程序;但是,使用或导出这些类型所描述的数据的任何 64 位应用程序均需要重新求值以确保正确。关于这一点的一个示例是直接处理 utmpx(4) 文件的应用程序。要在 64 位 应用程序环境中正确操作,请勿尝试直接访问这些文件,而应当使用 getutxent(3C) 及相关的函数系列。

附录 A,派生类型更改中包括了更改的派生类型的列表。

检查更改的副作用

需要注意的一个问题是,一个区域中的类型更改可能会导致另一个区域中进行意外的 64 位转换。例如,如果某个函数以前返回类型 int 而现在返回 ssize_t,则需要检查所有调用方。

检查直接使用 long 类型是否仍有意义

由于类型 long 在 ILP32 模型中为 32 位,在 LP64 模型中为 64 位,因此可能会出现以前定义为 long 类型的数据既不恰当又不必要的情况。在这种情况下,请尽可能使用可移植性更强的派生类型。

与此相关的是,由于上述原因,许多派生类型在 LP64 数据类型模型中可能已更改。例如,pid_t 在 32 位环境中仍为 long 类型,但是在 64 位环境中,pid_t 则为 int 类型。有关针对 LP64 编译环境修改的派生类型的列表,请参见附录 A,派生类型更改