https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89232
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- But you can include it in C++, because the header exists. If you just include it an do nothing, there's no problem (it's not part of the C++ standard and so your program is not portable, conforming C++, but it compiles). The problem is that you tried to use the 'noreturn' specifier in your function, and that is not valid in C++. Including a useless header that doesn't define anything in C++ is fairly harmless. Writing invalid C++ code is invalid, and that's what triggers an error. The problem is not the header, it's your code.