2010-04-05 85 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

相關問題