undefine and redefine macro   &   directives with macro arguments

the directives with macro arguments doesn't work in VC
Macro pitfalls---misnesting