Препроцессор си является однопроходным, так?
Тогда как он разворачивает перекрещенную конструкцию из ITER1-ITER2-ITER1...?
#define ITERATE(seq) SEQ(ITER1 seq)
#define SEQ(x) SEQ_I(x)
#define SEQ_I(x) x ## _END
#define ITER1(seq) seq ITER2
#define ITER2(seq) seq ITER1
#define ITER1_END
#define ITER2_END
ITERATE((a) (b) (c))
Можете, пожалуйста, рассказать по шагам, почему оно вообще разворачивается?