简体   繁体   中英

How can I make compiler version specific ifdef?

I've got the problem that my program will compile with g++10.2 and c++11 activated through cmake. but it will not compile with arduino dues arm-none-eabi-g++.exe compiler which also has c++11. The failure occurs because of one line that needs to be added for the arm compiler, but when I add that line to g++10.2 it won't compile.

So I need an #ifdef or some alternative to activate and deactivate the line specific for the compiler.

Like Deumaudit said in the comments:

Try to use __arm__ , __aarch64__ or __ARM_ARCH macro

You'll probably be ok if you use #ifdef __arm__ or even #if defined(__arm__) || defined(__aarch64__) #if defined(__arm__) || defined(__aarch64__)

If you're planning to add more supported platforms to your program, it might be a good idea to define some macros when building for a specific platform. I have my own _MY_APP_ARM macro defined in my CMakeLists.txt:

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

Which I can then use as #ifdef _MY_APP_ARM

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM