One of the problems with the crazy nesting of macros (other than understanding how they fit together) is trying to trace through it in the debugger :-) So your example is exactly the sort of case where I think cpppp would help. Instead of a header file full of crazy macros, you'd have a cpppp template module which you could call from other code, and the output would be plain old readable C code that you then feed to the compiler and have an easy debugging session.