A double-underscore attribute form is a macro-safer spelling for an attribute: its identifier uses double underscores, as in __unsequenced__. C23 provides these variants alongside standard spellings such as [[unsequenced]], [[deprecated]], and [[nodiscard]]. section 10.2.3
Macro-safe attribute spellings
The standard attribute [[unsequenced]] has the macro-safer form __unsequenced__. Related attribute names include __deprecated__, __fallthrough__, __maybe_unused__, __nodiscard__, __noreturn__, and __reproducible__. section 10.2.3
#if __has_c_attribute(__gnu__::__format__) [[__gnu__::__format__(__printf__, 3, 4)]] #endif int snprintf(char *buf, size_t size, const char *frmt, ...);
Shows double-underscore names in a GNU-namespaced attribute and in its attribute arguments. section 10.2.3
