This Developer Extended the C Preprocessor with Built-in Debugging and Mapping
Fun Extending the C Preprocessor
While building his own C2Y compiler, David Priver added extensions to the C preprocessor that remove the need for unreadable macro tricks. __print() and __where() simplify debugging, __map() applies a macro across arguments without faking recursion, and __VA_COUNT__ gives the variadic argument count directly. The result is a more powerful, readable preprocessor that keeps the dark magic out of everyday code.
The C Preprocessor is a powerful tool, but requires some unreadable dark magic to really take advantage of it. This isn't inherent to what you want to do with it though - it is merely a consequence of its underdeveloped machinery.