https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114007
Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2024-02-20 Ever confirmed|0 |1 --- Comment #12 from Iain Sandoe <iains at gcc dot gnu.org> --- further the manual says: "The special operator __has_cpp_attribute (operand) may be used in ‘#if’ and ‘#elif’ expressions in C++ code to test whether the attribute referenced by its operand is recognized by GCC" Which seems to be explicit about the use in C++ code (which makes me suspect that the availability in C mode might be unintentional). Currently it seems that libcpp makes __has_cpp_attribute an alias for __has_attribute, whereas __has_c_attribute is considered separate in the enumerations.