- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
随着 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/
我是一名优秀的程序员,十分优秀!