https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81513
--- Comment #4 from Andreas Schwab <sch...@linux-m68k.org> --- > #if __cpp_attributes >= 200809 && defined(__has_cpp_attribute) \ > && __has_cpp_attribute(maybe_unused) This will result in a syntax error if the compiler does not support __has_cpp_attribute. You need to separate the check from the use of the macro.