Here is the deal with the subscripts. For the most part, a macro with subscripts shouldn't be called directly. There is only one situation where it should, which I'll detail below.

The C preprocessor isn't recursive. So, if I define a macro that internally uses some other macro, like DYND_PP_MAP, there can be issues. Consider #define MAC(X) DYND_PP_MAP(OTHER_MAC, DYND_PP_RANGE(X)). MAC(4) returns (MAC(0), MAC(1), MAC(2), MAC(3)).

However, if I write something like DYND_PP_MAP(MAC, DYND_PP_RANGE(4)), the DYND_PP_MAP call in MAC's definition won't expand. For that reason, I need a second implementation of DYND_PP_MAP, i.e. DYND_PP_MAP_1. I should instead write #define MAC(X) DYND_PP_MAP_1(OTHER_MAC, DYND_PP_RANGE(X)).