I'm not really sure that's true; he seems to have gone to a fair amount of trouble to make sure that the expanded form is readable, at which point debugging it should be no trickier than debugging any other macro expansion - just keep expanding step by step until you find the thing that went wrong.<p>If anything I'd expect this to be easier to deal with than multiple layers of plain C macros given it's going to be a lot easier to introspect - at least for the same level of complexity of expanded result.<p>Of course, if you do substantially more complex things with it then, yes, it's going to be more complex to debug. But that's always the price paid for using complex abstractions - complexity can be corralled, compartmentalised and contained but rarely eliminated entirely.