2009-11-18 152 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

相关问题