随着arm64
作为iphoneos
平台的标准体系结构的引入,在某些情况下,必须为特定于64/32体系结构的代码实现编译时条件。
如果你看一下CoreGraphics/CGBase.h
以及一些流行的开源项目providing support for arm64,很明显你可以检查是否存在64位运行时:
#if defined(__LP64__) && __LP64__
...
#else
...
#endif
还可以专门检查arm64
1>中提到的#ifdef __arm64__
...
#else
....
#endif
(而不仅仅是64位运行时)
{{1}}
是否有针对这些定义的全面列表或文档?他们定义的地点或如何?
答案 0 :(得分:16)
这些宏并不特定于Cocoa,它们特定于CLANG,它们可以在命令行中列出:
clang -dM -E -x c /dev/null
不同的CLANG版本附带了不同数量的功能标记,可以在配置时打开和关闭,也可以根据运行编译器的平台和操作系统来打开和关闭。可以在testing headers中找到一个相当全面的列表,其中每个受支持的系统的变体也分散在测试目录中。每个文档的文档取决于该标志是特定于CLANG,还是在其链接的标准库之一中定义(例如__llvm__
为defined by CLANG,但__WCHAR_WIDTH__
由LibC定义) 。由于这个原因,确实没有包含权威文档的综合列表。只要符合语言规范,不同的平台就可以略微不同地做事。
大多数有趣的公共Objective-C宏存在于Foundation/NSObjCRuntime.h
底部附近的Foundation中。
答案 1 :(得分:1)