https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53182
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Vincent Lefèvre from comment #0) > Attributes without underscores can conflict with the ISO C standard. For > instance, if the C11 <stdnoreturn.h> header is included, this breaks GCC's > > __attribute__ ((noreturn)) > > (such problems may occur in particular if different libraries, with > different expectations, are used). To avoid such a clash, only the > __noreturn__ version should be used. Other attributes without __ may also > lead to conflicts with a future C standard. But *any* identifier can conflict with a macro from a future C standard. Why are these attributes special? I understand that there's a specific conflict for __attribute__((noreturn)) and <stdnoreturn.h> but I don't see why that implies all other attribute names have problems that are significantly worse than for any other identifier.