From Jason Turner

[cpp.pre]

Diff to HTML by rtfpessoa

tmp/tmpv6f0bzmg/{from.md → to.md} RENAMED
@@ -44,10 +44,11 @@ control-line:
44
  '# define ' identifier lparen '... )' replacement-list new-line
45
  '# define ' identifier lparen identifier-list ', ... )' replacement-list new-line
46
  '# undef ' identifier new-line
47
  '# line ' pp-tokens new-line
48
  '# error ' pp-tokensₒₚₜ new-line
 
49
  '# pragma ' pp-tokensₒₚₜ new-line
50
  '# 'new-line
51
  ```
52
 
53
  ``` bnf
@@ -69,10 +70,12 @@ elif-groups:
69
  ```
70
 
71
  ``` bnf
72
  elif-group:
73
  '# elif ' constant-expression new-line groupₒₚₜ
 
 
74
  ```
75
 
76
  ``` bnf
77
  else-group:
78
  '# else ' new-line groupₒₚₜ
@@ -93,11 +96,11 @@ conditionally-supported-directive:
93
  pp-tokens new-line
94
  ```
95
 
96
  ``` bnf
97
  lparen:
98
- a '(' character not immediately preceded by white-space
99
  ```
100
 
101
  ``` bnf
102
  identifier-list:
103
  identifier
@@ -185,16 +188,16 @@ At the start of phase 4 of translation, the *group* of a
185
 
186
  When in a group that is skipped [[cpp.cond]], the directive syntax is
187
  relaxed to allow any sequence of preprocessing tokens to occur between
188
  the directive name and the following new-line character.
189
 
190
- The only white-space characters that shall appear between preprocessing
191
  tokens within a preprocessing directive (from just after the
192
  directive-introducing token through just before the terminating new-line
193
  character) are space and horizontal-tab (including spaces that have
194
- replaced comments or possibly other white-space characters in
195
- translation phase 3).
196
 
197
  The implementation can process and skip sections of source files
198
  conditionally, include other source files, import macros from header
199
  units, and replace macros. These capabilities are called
200
  *preprocessing*, because conceptually they occur before translation of
 
44
  '# define ' identifier lparen '... )' replacement-list new-line
45
  '# define ' identifier lparen identifier-list ', ... )' replacement-list new-line
46
  '# undef ' identifier new-line
47
  '# line ' pp-tokens new-line
48
  '# error ' pp-tokensₒₚₜ new-line
49
+ '# warning' pp-tokensₒₚₜ new-line
50
  '# pragma ' pp-tokensₒₚₜ new-line
51
  '# 'new-line
52
  ```
53
 
54
  ``` bnf
 
70
  ```
71
 
72
  ``` bnf
73
  elif-group:
74
  '# elif ' constant-expression new-line groupₒₚₜ
75
+ '# elifdef ' identifier new-line groupₒₚₜ
76
+ '# elifndef' identifier new-line groupₒₚₜ
77
  ```
78
 
79
  ``` bnf
80
  else-group:
81
  '# else ' new-line groupₒₚₜ
 
96
  pp-tokens new-line
97
  ```
98
 
99
  ``` bnf
100
  lparen:
101
+ a '(' character not immediately preceded by whitespace
102
  ```
103
 
104
  ``` bnf
105
  identifier-list:
106
  identifier
 
188
 
189
  When in a group that is skipped [[cpp.cond]], the directive syntax is
190
  relaxed to allow any sequence of preprocessing tokens to occur between
191
  the directive name and the following new-line character.
192
 
193
+ The only whitespace characters that shall appear between preprocessing
194
  tokens within a preprocessing directive (from just after the
195
  directive-introducing token through just before the terminating new-line
196
  character) are space and horizontal-tab (including spaces that have
197
+ replaced comments or possibly other whitespace characters in translation
198
+ phase 3).
199
 
200
  The implementation can process and skip sections of source files
201
  conditionally, include other source files, import macros from header
202
  units, and replace macros. These capabilities are called
203
  *preprocessing*, because conceptually they occur before translation of