我想编写代码,具体取决于目标架构是armv7,armv7s还是arm64.
我不能使用sysctlbyname的原因是这会在运行时给我底层架构,但是当arm64例如模拟armv7时,sysctl(貌似)仍然报告arm64.
Bra*_*ram 11
虽然这不是问题的100%答案,但可能有用:
使用clang时,您可以使用以下方法识别32位手臂和64位手臂:
__arm__ 它定义为32位臂,仅限32位臂.
__aarch64__ 这是为64位臂和64位臂定义的.
小智 6
__ARM_ARCH_ISA_A64 如果目标是 arm64,则是预定义的,
__ARM_ARCH_7S__ 对于 armv7s,
__ARM_ARCH_7A__ 对于 armv7。
用途:clang -arch arm64 -E -dM - < /dev/null可以输出预处理宏。
小智 5
clang --target=... -mcpu=... -E - -dM </dev/null 将输出所有预定义的预处理器宏(gcc的工作原理也与此类似)
我没有看到一个宏给出了答案,但你也许可以使用一些组合__ARM_ARCH和defined(__ARM_ARCH_*)。
| 归档时间: |
|
| 查看次数: |
6444 次 |
| 最近记录: |