https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107980
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Maybe add a _Static_warn builtin instead which is like _Static_assert but instead of an error, it is a warning. That is: #define va_start(ap, ...) (_Static_warn(__builtin_va_opt_count(__VA_OPT__) <= 1, "More than one argument supplied to the macro va_start"), __builtin_va_start(ap, 0)) THe only issue is that message does not get translated.