[cpp.scope] (original) (raw)
15 Preprocessing directives [cpp]
15.7 Macro replacement [cpp.replace]
15.7.6 Scope of macro definitions [cpp.scope]
A macro definition lasts (independent of block structure) until a corresponding#undefdirective is encountered or (if none is encountered) until the end of the translation unit.
Macro definitions have no significance after translation phase 4.
A preprocessing directive of the form
causes the specified identifier no longer to be defined as a macro name.
It is ignored if the specified identifier is not currently defined as a macro name.