https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80785
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- The usual reason a header has extern "C" is because it's intended for use by both C and C++ programs, and in that case restructuring it for the benefit of C++ only is probably not very likely. But then static variables in headers aren't terribly common anyway, so maybe it's not a problem.