在OS X上轉移到64位的最佳做法是什麼?使用10.6 SDK和64位intel作爲我的SDK和目標。在OS X上轉移到64位?
我有INT32種類改變
確實OS X有一個「的Int64」或者一個會用一個「很長很長」?
我在哪裏可以找到可用數據類型的資源?
還有哪些其他問題?
在OS X上轉移到64位的最佳做法是什麼?使用10.6 SDK和64位intel作爲我的SDK和目標。在OS X上轉移到64位?
我有INT32種類改變
確實OS X有一個「的Int64」或者一個會用一個「很長很長」?
我在哪裏可以找到可用數據類型的資源?
還有哪些其他問題?
Apple正好有您需要的文檔,名爲64-bit transition guide。 OS X使用LP64模型,所以你應該使用
#ifdef __LP64__
等根據位寬有條件編譯的東西,特別是如果你希望你的代碼是32位/ 64位清潔。 對於可可,請參閱64 bit Transition Guide for Cocoa。在那裏,根據模式,NSInteger
具有合適的位寬,所以你不必自己處理位寬。
兩個long
和long long
是64位的各類建築在OS X上的64位時,此外,你可以,如果你需要指定一個整數的寬度正好是64位使用<stdint.h>
定義的int64_t
和uint64_t
類型。
除非用於執行指針運算(或者取決於它們與指針的大小相同),否則通常不需要在程序中更改現有的int32
類型。 32位算術在64位程序中繼續工作得很好。如果您的確實的變量必須與指針的大小相同,請使用uintptr_t
類型,該類型可以在32位和64位版本中使用。
其他情況下,你可能需要做出改變是,如果一個API希望傳遞(或收益)一size_t
或long
或intptr_t
,並且您已經使用int
這一切的時候了,而不是什麼功能問題實際上指定。它將在32位版本上工作,但可能在爲64位構建時引入錯誤。
Yuji的建議閱讀64位轉換指南是非常好的建議。
@stephen - 我們需要的應用程序只有64位。 – 2010-04-05 20:45:37
@stephen - 你能多解釋一下嗎?我只想成爲64位。我使用10.5 SDK和64位intel作爲我的目標設置。我有int16,in32和一些longs。 – 2010-04-05 22:19:11
@ML - 您是否嘗試過在不改變任何內容的情況下構建64位應用程序?如果你的代碼沒有對指針做任何「聰明的事情」,它可能正常工作。 – 2010-04-05 22:47:43
@yuji - 我們需要的應用程序只有64位。 – 2010-04-05 20:45:55