[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.