ub_c_error_msg
void ub_c_error_msg(const char* fmt, ...) ATTR_FORMAT(printf, 1, 2);
#define ECHO ub_c_error_msg("syntax error at text: %s", yytext)
ub_c_error_msg("too many include files");
ub_c_error_msg("empty include file name");
ub_c_error_msg("include %s: malloc failure", filename);
ub_c_error_msg("include %s: strdup failure", filename);
ub_c_error_msg("cannot open include file '%s': %s",
ub_c_error_msg("unknown keyword '%s'", yytext);
ub_c_error_msg("stray '%s'", yytext);
void ub_c_error_msg(const char* fmt, ...) ATTR_FORMAT(printf, 1, 2);