From a3fc54345949535524d01319e1ca6378b7c2c201 Mon Sep 17 00:00:00 2001 From: jiang <30155751@qq.com> Date: Sun, 29 Jun 2014 20:35:57 +0800 Subject: bug: ---------------------------------------------------------------------- #define hexCh(c (c >= 10 ? 'a' + c - 10 : '0' + c) hexCh(c); out: jiang@jiang:~/test$ ./tcc -E c4.c # 1 "c4.c" (c >= 10 ? 'a' + c - 10 : '0' + c); --------------------------------------------------------------- #define hexCh(c/3) (c >= 10 ? 'a' + c - 10 : '0' + c) hexCh(c); out: jiang@jiang:~/test$ ./tcc -E c4.c # 1 "c4.c" /3) (c >= 10 ? 'a' + c - 10 : '0' + c); jiang@jiang:~/test$ after patch: # 1 "c4.c" c4.c:1: error: may not appear in macro parameter list: "(" jiang@jiang:~/test$ jiang@jiang:~/test$ ./tcc -E c4.c # 1 "c4.c" c4.c:1: error: may not appear in macro parameter list: "/" jiang@jiang:~/test$ --- tccpp.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'tccpp.c') diff --git a/tccpp.c b/tccpp.c index 2da65cd..0cea7cf 100644 --- a/tccpp.c +++ b/tccpp.c @@ -1239,16 +1239,15 @@ ST_FUNC void parse_define(void) next_nomacro(); } if (varg < TOK_IDENT) - tcc_error("badly punctuated parameter list"); + tcc_error( "\'%s\' may not appear in parameter list", get_tok_str(varg, NULL)); s = sym_push2(&define_stack, varg | SYM_FIELD, is_vaargs, 0); *ps = s; ps = &s->next; if (tok != ',') - break; + continue; next_nomacro(); } - if (tok == ')') - next_nomacro_spc(); + next_nomacro_spc(); t = MACRO_FUNC; } tok_str_new(&str); -- cgit v1.3.1