#153·chibicc

macro expansion is not correct

Author: real-hongCreated Jan 22, 2025Updated Apr 22, 2025
bash
chibicc -E macro.c

will get

BAR() 1

however

bash
gcc -E macro.c

will get

BAR_I ()() 1 1 1
c
// macro.c
#define EMPTY()
#define DEFER(id) id EMPTY()
#define EXPAND(...) __VA_ARGS__
#define BAR_I() BAR
#define BAR()  DEFER(BAR_I)()() 1
EXPAND(EXPAND(BAR()))