This is not the same thing, what you do here is not a pre-processor error, the compiler will believe MY_MACRO is an undeclared symbol.
I am talking about :
#if NOT_DEFINED // if NOT_DEFINED is undefined, then the default behavior is to consider it 0
we are not in :(
#endif
#if !ANOTHER
we are in :)
#endif
#if YET_ANOTHER + 2 == 2
we are in :) but did we want it !
#endif