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$
This commit is contained in:
7
tccpp.c
7
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);
|
||||
|
||||
Reference in New Issue
Block a user