Macos 在OS X上移动到64位?

Macos 在OS X上移动到64位?,macos,64-bit,Macos,64 Bit,在OS X上迁移到64位的最佳实践是什么?使用10.6 SDK和64位intel作为我的SDK和目标 我需要更改int32类型 OSX有“int64”还是会使用“long long” 在哪里可以找到可用数据类型的资源 还有什么其他问题吗?苹果的文档正是您想要的,叫做。OSX使用LP64模型,所以您应该使用 #ifdef __LP64__ 等等,根据位宽度有条件地编译东西,特别是如果您希望代码是32位/64位干净的。 有关可可,请参阅。在这里,NSInteger根据模式有一个合适的位宽度,因此您

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

我需要更改int32类型

OSX有“int64”还是会使用“long long”

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


还有什么其他问题吗?

苹果的文档正是您想要的,叫做。OSX使用LP64模型,所以您应该使用

#ifdef __LP64__
等等,根据位宽度有条件地编译东西,特别是如果您希望代码是32位/64位干净的。
有关可可,请参阅。在这里,
NSInteger根据模式有一个合适的位宽度,因此您不必自己处理位宽度。

苹果正好有您想要的文档,名为。OSX使用LP64模型,所以您应该使用

#ifdef __LP64__
等等,根据位宽度有条件地编译东西,特别是如果您希望代码是32位/64位干净的。
有关可可,请参阅。在这里,
NSInteger
根据模式具有适当的位宽度,因此您不必自己处理位宽度。

在OS X上构建64位时,
long
long
都是64位类型。此外,如果需要指定整数的宽度正好为64位,则可以使用
中定义的
int64\u t
uint64\u t
类型

您通常不需要更改程序中现有的
int32
类型,除非它们被用于执行指针算术(或者依赖于它们与指针大小相同)。32位算术在64位程序中仍然可以正常工作。如果变量的大小必须与指针的大小相同,请使用
uintpttr\t
类型,该类型将在32位和64位版本中工作

您可能需要进行更改的另一种情况是,如果API希望传递(或返回)一个
size\u t
long
intptr\u t
,并且您一直在使用
int
,而不是所讨论的函数实际指定的内容。它将在32位版本上工作,但在为64位版本构建时可能会引入错误


Yuji建议阅读64位转换指南,这是一个很好的建议。

在OS X上构建64位时,
long
long
都是64位类型。此外,如果需要指定整数的宽度正好为64位,则可以使用
中定义的
int64\u t
uint64\u t
类型

您通常不需要更改程序中现有的
int32
类型,除非它们被用于执行指针算术(或者依赖于它们与指针大小相同)。32位算术在64位程序中仍然可以正常工作。如果变量的大小必须与指针的大小相同,请使用
uintpttr\t
类型,该类型将在32位和64位版本中工作

您可能需要进行更改的另一种情况是,如果API希望传递(或返回)一个
size\u t
long
intptr\u t
,并且您一直在使用
int
,而不是所讨论的函数实际指定的内容。它将在32位版本上工作,但在为64位版本构建时可能会引入错误


Yuji建议阅读64位转换指南,这是一个很好的建议。

@stephen-我们只需要64位的应用程序。@stephen-你能再解释一下吗?我只想要64位。我使用10.5 SDK和64位intel作为目标设置。我有int16、in32和一些long。@ML-您是否尝试过只构建64位的应用程序而不做任何更改?如果你的代码没有对指针做任何“聪明”的事情,它可能会正常工作。@stephen-我们需要应用程序仅为64位。@stephen-你能再解释一下吗?我只想要64位。我使用10.5 SDK和64位intel作为目标设置。我有int16、in32和一些long。@ML-您是否尝试过只构建64位的应用程序而不做任何更改?如果你的代码没有对指针做任何“聪明”的事情,它可能会正常工作。@yuji-我们需要应用程序仅为64位。@yuji-我们需要应用程序仅为64位。