Regarding the problems you are having with the macros, you have to remember, the preprocessor has absolutely no knowledge of C; it will happily expand macros that generate totally meaningless code for the compiler to complain about.
That said, I've never encountered problems* using function-like macros within other function-like macros, provided they are #defined in the proper order.
*except for the obvious "hmm, that didn't quite expand as intended" bugs that required me to go back in and fix them.
No lectures about C++ this time. I'm sure you'll know better for your next project ;-)