【问题标题】:__LP64__ on OS X --> Snow Leopard Equivalent?OS X 上的 __LP64__ --> 等同于雪豹?
【发布时间】:2010-12-17 18:02:41
【问题描述】:

在 Leopard 上运行时,您可以执行以下操作:

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

什么是雪豹和雪豹64

AND(最重要的是)

我自己在哪里可以找到这个答案而不必问?

【问题讨论】:

    标签: c++ macos osx-snow-leopard


    【解决方案1】:

    __LP64__不是“豹64”的缩写。它代表“长和指针是 64 位”。它在 SnowLeopard 上的设置与在 Leopard 上完全相同。

    __LP64__ 在 windows 上不会有相同的行为,因为 windows 使用不同的 64 位模型,其中 long 不是 64 位宽。相反,在 64 位窗口中,long 是 32 位宽,long long 和指针是 64 位宽。这通常被称为“llp64”模型。

    【讨论】:

    • @Stephen,所以我会为 OS X 和 Linux 做 LP_64,是否有适用于 Windows 的 ILP_64
    • 对windows构建环境不熟悉;希望其他人可以告诉您使用什么预处理器符号。但是,如果 Windows 确实有这样的宏,那就是 __LLP64__
    【解决方案2】:

    __LP64__ 是一个 gcc 预处理器宏,无论何时构建 64 位数据模型,无论您构建的 OS X 版本如何,它都是非零的。在为 64 位 Intel 处理器构建时,另一个非零宏是 __x86_64__。您可以在 developer.apple.com 找到有关这些宏和其他宏的更多信息。

    您可以为您的 XCode 项目指定一个部署目标,这将指定您的应用程序可以在其上运行的最低允许操作系统版本。您可以在代码中利用此设置有条件地启用/禁用部分代码;请参阅this mailing list post 了解更多信息。

    【讨论】:

    • 还有:the GCC docs
    • @fbrereto - 那么我是否应该将 'if X86_64' 用于 64 位的东西,然后如果现在则默认使用 32 位的东西? LP_64 或 X86_64 是否也适用于 Windows 和 AMD 处理器(我的应用程序是为两者构建的)。如果是这样,那么我将需要类似“if X86_4”之类的内容,如果 Apple 或 WIN32....我想对了吗?
    • @fiberreto - 在我看来是 _WIN32 和 _WIN64 以及 Apple APPLE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多