gpt4 book ai didi

ios - __LP64__ 和 __arm64__ 在 Cocoa 中存在哪些定义可以在编译时区分平台?它们在哪里或如何定义?

转载 作者:技术小花猫 更新时间:2023-10-29 10:34:41 27 4
gpt4 key购买 nike

随着 arm64 作为 iphoneos 平台的标准架构的引入,在某些情况下有必要为特定于 64/32架构。

如果您查看 CoreGraphics/CGBase.h 以及一些流行的开源项目如何 providing support for arm64很明显,您可以像这样检查 64 位运行时是否存在:

#if defined(__LP64__) && __LP64__
...
#else
...
#endif

也可以专门检查 arm64(而不是仅 64 位运行时),如 this fix for erikdoe/ocmock 中所述

#ifdef __arm64__
...
#else
....
#endif

是否有针对这些定义的综合列表或文档?它们在哪里或如何定义?

最佳答案

这些宏不是 Cocoa 特有的,它们是 CLANG 特有的,它们可以在命令行上列出:

clang -dM -E -x c /dev/null

不同的 CLANG 版本附带不同数量的功能标志,这些功能标志可以在配置时打开和关闭,或者取决于编译器运行的平台和操作系统。可以在他们的 testing headers 中找到一个相当全面的列表。每个受支持系统的变体也散布在测试目录中。每个文档取决于标志是特定于 CLANG,还是在它链接的标准库之一中定义(例如 __llvm__defined by CLANG ,但是 __WCHAR_WIDTH__ 是由 LibC 定义)。由于这个原因,确实没有包含最终文档的完整列表。只要遵守语言规范,允许不同的平台做事略有不同。

大多数有趣的公共(public) Objective-C 宏都存在于 Foundation/NSObjCRuntime.h 底部附近的 Foundation 中。

关于ios - __LP64__ 和 __arm64__ 在 Cocoa 中存在哪些定义可以在编译时区分平台?它们在哪里或如何定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20462091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com