2010-04-05 57 views
1

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

我有INT32种类改变

确实OS X有一个“的Int64”或者一个会用一个“很长很长”?

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

还有哪些其他问题?

回答

6

Apple正好有您需要的文档,名为64-bit transition guide。 OS X使用LP64模型,所以你应该使用

#ifdef __LP64__ 

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

+0

@yuji - 我们需要的应用程序只有64位。 – 2010-04-05 20:45:55

1

两个longlong long是64位的各类建筑在OS X上的64位时,此外,你可以,如果你需要指定一个整数的宽度正好是64位使用<stdint.h>定义的int64_tuint64_t类型。

除非用于执行指针运算(或者取决于它们与指针的大小相同),否则通常不需要在程序中更改现有的int32类型。 32位算术在64位程序中继续工作得很好。如果您的确实的变量必须与指针的大小相同,请使用uintptr_t类型,该类型可以在32位和64位版本中使用。

其他情况下,你可能需要做出改变是,如果一个API希望传递(或收益)一size_tlongintptr_t,并且您已经使用int这一切的时候了,而不是什么功能问题实际上指定。它将在32位版本上工作,但可能在为64位构建时引入错误。

Yuji的建议阅读64位转换指南是非常好的建议。

+0

@stephen - 我们需要的应用程序只有64位。 – 2010-04-05 20:45:37

+0

@stephen - 你能多解释一下吗?我只想成为64位。我使用10.5 SDK和64位intel作为我的目标设置。我有int16,in32和一些longs。 – 2010-04-05 22:19:11

+0

@ML - 您是否尝试过在不改变任何内容的情况下构建64位应用程序?如果你的代码没有对指针做任何“聪明的事情”,它可能正常工作。 – 2010-04-05 22:47:43

相关问题