在OS X上移动到64位?

时间:2010-04-05 19:53:27

标签: macos 64-bit

在OS X上迁移到64位的最佳做法是什么?使用10.6 SDK和64位intel作为我的SDK和目标。

我有要更改的int32类型

OS X是否具有'int64'或者是否会使用'long long'?

我在哪里可以找到可用数据类型的资源?

还有哪些其他问题?

2 个答案:

答案 0 :(得分:6)

Apple拥有您想要的文档,名为64-bit transition guide。 OS X使用LP64模型,因此您应该使用

#ifdef __LP64__

等。根据位宽有条件地编译东西,特别是如果你希望你的代码是32位/ 64位干净。 对于Cocoa,请参阅64 bit Transition Guide for Cocoa。在那里,NSInteger根据模式具有适当的位宽,因此您不必自己处理位宽。

答案 1 :(得分:1)

在OS X上构建64位时,longlong long都是64位类型。此外,您还可以使用在{x}中定义的int64_tuint64_t类型<stdint.h>如果需要指定一个整数正好是64位宽。

您通常不需要更改程序中的现有int32类型,除非它们被用于执行指针运算(或者取决于它们与指针的大小相同)。在64位程序中,32位运算继续正常工作。如果您的变量必须与指针的大小相同,请使用uintptr_t类型,这将在32位和64位版本中都有效。

您可能需要进行更改的另一种情况是API是否希望传递(或返回)size_tlongintptr_t,并且您一直在使用int始终为{{1}},而不是实际指定的函数。它将用于32位版本,但在为64位构建时可能会引入错误。

Yuji 建议阅读64位过渡指南是一个很好的建议。