首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以使用什么预定义的宏来检测Clang中的目标体系结构?

我可以使用什么预定义的宏来检测Clang中的目标体系结构?
EN

Stack Overflow用户
提问于 2014-05-29 21:44:00
回答 3查看 13.3K关注 0票数 12

我想根据目标架构是armv7、armv7s还是arm64来编写代码。

我不能使用sysctlbyname的原因是这会在运行时给我底层架构,但是当arm64模拟armv7时,sysctl (似乎)仍然报告arm64。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-31 20:02:38

clang --target=... -mcpu=... -E - -dM </dev/null将输出所有预定义的预处理器宏(类似的工作也适用于gcc )

我看不到单个宏可以提供答案,但是您可以使用__ARM_ARCHdefined(__ARM_ARCH_*)的某种组合。

票数 11
EN

Stack Overflow用户

发布于 2017-01-16 05:01:05

虽然这不是这个问题的100%答案,但可能会有用:

使用clang时,您可以使用以下命令区分32位arm和64位arm:

为32位arm和仅32位arm定义的__arm__

为64位arm定义的__aarch64__,并且仅为64位arm定义。

票数 25
EN

Stack Overflow用户

发布于 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可以输出预处理宏。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23934862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档