diff --git a/tccpp.c b/tccpp.c index 6aa067f..33c65a4 100644 --- a/tccpp.c +++ b/tccpp.c @@ -2689,6 +2689,8 @@ static int macro_subst_tok(TokenString *tok_str, ml->p = NULL; *can_read_stream = ml -> prev; } + /* also, end of scope for nested defined symbol */ + (*nested_list)->v = -1; goto redo; } } else { diff --git a/tests/tcctest.c b/tests/tcctest.c index 8d558e3..22f3fdb 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -290,13 +290,12 @@ static void print_num(char *fn, int line, int num) { void recursive_macro_test(void) { -#if 0 /* doesnt work yet */ + #define ELF32_ST_TYPE(val) ((val) & 0xf) #define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) #define STB_WEAK 2 /* Weak symbol */ #define ELFW(type) ELF##32##_##type printf("%d\n", ELFW(ST_INFO)(STB_WEAK, ELFW(ST_TYPE)(123))); -#endif #define WRAP(x) x