Mac OS X 开发:从 32 位到 64 位及相关技术要点
1. 32 位到 64 位代码转换
在将 32 位代码转换为 64 位代码时,-Wconversion编译器标志可能会很有用。同时,可以使用__LP64__、__ppc__、__i386__和__x86_64__宏来有条件地编译 64 位代码。目前,能够用 C 语言构建 64 位应用程序,C++ 也可以在 64 位模式下编译。
在 Mac OS X 上进行 64 位计算时,需要牢记以下几点:
|要点|详情|
| ---- | ---- |
|数据模型|Mac OS X 遵循 LP64 64 位数据模型(Sun 和 SGI 也使用该模型),其中int是 32 位,而long、long long和指针是 64 位。|
|指针存储|在 64 位代码中,int无法存储指针。|
|类型转换|在 64 位类型和 32 位类型之间进行强制类型转换可能会破坏数据。|
|编译应用|在 Tiger 系统中,只有非 GUI 应用程序可以编译为 64 位,但可以使用 32 位 GUI 来启动和控制 64 位应用程序;在 Leopard 系统中,GUI 和非 GUI 应用程序都可以编译为 64 位。|
|二进制格式|将应用程序编译为 64 位会生成 Mac OS X 中使用的 Mach - O