"… a significant part of the problem with C preprocessing is the backend languages being targeted… C macros in the context of the 'home language' have to contend with syntactic roadblocks, such as identifiers having to be declared before use." www.kylheku.com/cgit/cppawk/about/
"Because Awk is a flexibly typed language in which variables don't have to be declared, it creates opportunities for significantly more freedom in how the C preprocessor can be applied, and the resulting macros can be much more clutter-free and ergonomic compared to if similar techniques were attempted on the 'home turf'. It's as if the C preprocessor were tailor-made for Awk."