如何使编译器版本特定的ifdef



我遇到了一个问题,我的程序将使用通过cmake激活的g++10.2和c++11进行编译。但它不会用arduino-dess-arm-none-eabi-g++.exe编译器编译,后者也有c++11。失败的原因是需要为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

相关内容

  • 没有找到相关文章

最新更新