33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
[cpp.scope]
|
||
|
||
# 15 Preprocessing directives [[cpp]](./#cpp)
|
||
|
||
## 15.7 Macro replacement [[cpp.replace]](cpp.replace#cpp.scope)
|
||
|
||
### 15.7.6 Scope of macro definitions [cpp.scope]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/preprocessor.tex#L2040)
|
||
|
||
A macro definition lasts
|
||
(independent of block structure)
|
||
until a corresponding#undef directive is encountered or
|
||
(if none is encountered)
|
||
until the end of the translation unit[.](#1.sentence-1)
|
||
|
||
Macro definitions have no significance after translation phase 4[.](#1.sentence-2)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/preprocessor.tex#L2050)
|
||
|
||
A preprocessing directive of the form
|
||
|
||
# undef [*identifier*](lex.name#nt:identifier "5.11 Identifiers [lex.name]") [*new-line*](cpp.pre#nt:new-line "15.1 Preamble [cpp.pre]")
|
||
|
||
causes the specified identifier no longer to be defined as a macro name[.](#2.sentence-1)
|
||
|
||
It is ignored if the specified identifier is not currently defined as
|
||
a macro name[.](#2.sentence-2)
|