我想根据目标架构是armv7、armv7s还是arm64来编写代码。
我不能使用sysctlbyname的原因是这会在运行时给我底层架构,但是当arm64模拟armv7时,sysctl (似乎)仍然报告arm64。
发布于 2014-05-31 20:02:38
clang --target=... -mcpu=... -E - -dM </dev/null
将输出所有预定义的预处理器宏(类似的工作也适用于gcc )
我看不到单个宏可以提供答案,但是您可以使用__ARM_ARCH
和defined(__ARM_ARCH_*)
的某种组合。
发布于 2017-01-16 05:01:05
虽然这不是这个问题的100%答案,但可能会有用:
使用clang时,您可以使用以下命令区分32位arm和64位arm:
为32位arm和仅32位arm定义的__arm__
。
为64位arm定义的__aarch64__
,并且仅为64位arm定义。
发布于 2015-03-02 17:36:27
如果其目标是arm64,则__ARM_ARCH_ISA_A64
是预定义的,
用于armv7s的__ARM_ARCH_7S__
,
armv7的__ARM_ARCH_7A__
。
用法:clang -arch arm64 -E -dM - < /dev/null
可以输出预处理宏。
https://stackoverflow.com/questions/23934862
复制相似问题