NEVER-EVER use macros to do more than a very-very simple thing like:
abs( x ); -or- max( x, y );
I once saw [a retard's] code in which he used macros everywhere. I then chose to ban all macros in the company (my rule-book).
The only exception is if the code-monkey obtains a waiver from either the customer, or project manager.
And yes I know there can be a fine-line between a #define and a macro.
I don't think you are saving much time when implementing [nested] macros: errors can be hard to track down too.
--Cpt. Vince Foster 2nd Cannon Place Fort Marcy Park, VA