refine macro definition

This statement will not work using the former macro definition:
if MACRO_NAME(...);
else ...
which will be substitute into:
if { ... };
else ... // error