2009-11-18 150 views
8

當上豹運行,你可以這樣做:__LP64__在OS X上 - > Snow Leopard Equivalent?

#if __LP64__ 
    #pragma message ("64 bit Leopard issue") 
#endif 

什麼是雪豹和雪豹64

AND(最重要的)

會在哪裏,我發現這個回答我自己,而不是不得不問?

回答

7

__LP64__是gcc的預處理器宏,非零,每當你正在建設的64位數據模型,無論你正在建設的OS X版本。這將是非零的另一個宏__x86_64__構建64位英特爾處理器的時候。你可以在developer.apple.com找到更多關於這些和其他宏的信息。

您可以爲您的XCode項目,該項目將指定在您的應用程序可以運行的最小允許操作系統版本指定部署目標。您可以在代碼中利用此設置來有條件地啓用/禁用其中的一部分;有關更多信息,請參見this mailing list post

+0

此外:[GCC文檔](http://gcc.gnu.org/onlinedocs/gcc-3.4.6/cpp/Common-Predefined-Macros.html) – Chuck 2009-11-18 05:59:47

+0

@fbrereto - 我應該使用'if X86_64 '爲64位的東西,然後默認爲32位的東西,如果現在? LP_64或X86_64是否也可以在Windows和AMD處理器上工作(我的應用程序都是爲兩者而構建的)。如果是這樣,那麼我會需要像'如果X86_4'和內部如果蘋果或WIN32 ....我是否正確思考? – 2009-11-18 14:56:00

+0

@fibrereto - 這在我看來_WIN32和_WIN64和蘋果__APPLE__ – 2009-11-18 15:00:08

12

__LP64__不是 「豹64」 的縮寫。它代表「多頭和指針是64位」。它與Snow Leopard的設置完全相同,因爲它與Leopard相同。

__LP64__在windows上不會有相同的行爲,因爲windows使用不同的64位模型,其中long不是64位寬。相反,在64位窗口中,long的長度是32位,long long和指針的寬度是64位。這通常被稱爲「llp64」模型。

+0

@Stephen,所以我會爲OS X和Linux做__LP_64__,是有適用於Windows的__ILP_64__? – 2009-11-18 18:06:30

+0

我不熟悉windows構建環境;希望別人可以告訴你使用什麼樣的預處理符號。但是,如果Windows確實有這樣一個宏,它將是'__LLP64__'。 – 2009-11-18 18:51:04

+0

[的維基百科上的64位模型助記符有用的比較](http://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models) – t0rst 2013-09-30 07:35:40

相關問題