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:
9
tests/tests2/68_macro_concat.c
Normal file
9
tests/tests2/68_macro_concat.c
Normal file
@ -0,0 +1,9 @@
|
||||
#include <stdio.h>
|
||||
#define hexCh(c (c >= 10 ? 'a' + c - 10 : '0' + c)
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int c = 0xa;
|
||||
printf("hex: %c\n", hexCh(c));
|
||||
return 0;
|
||||
}
|
||||
1
tests/tests2/68_macro_concat.expect
Normal file
1
tests/tests2/68_macro_concat.expect
Normal file
@ -0,0 +1 @@
|
||||
68_macro_concat.c:2: error: '(' may not appear in parameter list
|
||||
9
tests/tests2/69_macro_concat.c
Normal file
9
tests/tests2/69_macro_concat.c
Normal file
@ -0,0 +1,9 @@
|
||||
#include <stdio.h>
|
||||
#define hexCh(c/3) (c >= 10 ? 'a' + c - 10 : '0' + c)
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int c = 0xa;
|
||||
printf("hex: %c\n", hexCh(c));
|
||||
return 0;
|
||||
}
|
||||
1
tests/tests2/69_macro_concat.expect
Normal file
1
tests/tests2/69_macro_concat.expect
Normal file
@ -0,0 +1 @@
|
||||
69_macro_concat.c:2: error: '/' may not appear in parameter list
|
||||
@ -82,7 +82,9 @@ TESTS = \
|
||||
64_macro_nesting.test \
|
||||
65_macro_concat_start.test \
|
||||
66_macro_concat_end.test \
|
||||
67_macro_concat.test
|
||||
67_macro_concat.test \
|
||||
68_macro_concat.test \
|
||||
69_macro_concat.test
|
||||
|
||||
# 34_array_assignment.test -- array assignment is not in C standard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user