微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使编译器版本特定于 ifdef?

如何解决如何使编译器版本特定于 ifdef?

我遇到的问题是我的程序将使用通过 cmake 激活的 g++10.2 和 c++11 进行编译。但它不会用同样有 c++11 的 arduino 会费 arm-none-eabi-g++.exe 编译器编译。失败是因为需要为 arm 编译器添加一行,但是当我将该行添加到 g++10.2 时,它不会编译。

所以我需要一个 #ifdef 或其他替代方法来激活和停用特定于编译器的行。

解决方法

就像 Deumaudit 在评论中所说:

尝试使用 __arm____aarch64____ARM_ARCH

如果你使用 #ifdef __arm__ 甚至 #if defined(__arm__) || defined(__aarch64__)

如果您计划向您的程序添加更多支持的平台,那么在为特定平台构建时定义一些宏可能是个好主意。我在 CMakeLists.txt 中定义了自己的 _MY_APP_ARM 宏:

if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
    add_definitions(-D_MY_APP_ARM)
endif()

然后我可以将其用作 #ifdef _MY_APP_ARM

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。