我遇到了一个问题,我的程序将使用通过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