From Jason Turner

[cpp.pragma.op]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp4p7momel/{from.md → to.md} +21 -18
tmp/tmp4p7momel/{from.md → to.md} RENAMED
@@ -4,11 +4,11 @@ A unary operator expression of the form:
4
 
5
  ``` bnf
6
  '_Pragma' '(' string-literal ')'
7
  ```
8
 
9
- is processed as follows: The string literal is *destringized* by
10
  deleting the `L` prefix, if present, deleting the leading and trailing
11
  double-quotes, replacing each escape sequence `\"` by a double-quote,
12
  and replacing each escape sequence `\\` by a single backslash. The
13
  resulting sequence of characters is processed through translation phase
14
  3 to produce preprocessing tokens that are executed as if they were the
@@ -42,31 +42,39 @@ LISTING( ..\listing.dir )
42
  <!-- Link reference definitions -->
43
  [basic.stc.dynamic.safety]: basic.md#basic.stc.dynamic.safety
44
  [cpp]: #cpp
45
  [cpp.concat]: #cpp.concat
46
  [cpp.cond]: #cpp.cond
 
47
  [cpp.error]: #cpp.error
 
48
  [cpp.include]: #cpp.include
49
  [cpp.line]: #cpp.line
 
50
  [cpp.null]: #cpp.null
51
  [cpp.pragma]: #cpp.pragma
52
  [cpp.pragma.op]: #cpp.pragma.op
 
53
  [cpp.predefined]: #cpp.predefined
 
54
  [cpp.replace]: #cpp.replace
55
  [cpp.rescan]: #cpp.rescan
56
  [cpp.scope]: #cpp.scope
57
  [cpp.stringize]: #cpp.stringize
58
  [cpp.subst]: #cpp.subst
59
- [cstdint]: language.md#cstdint
60
  [expr.const]: expr.md#expr.const
61
  [expr.new]: expr.md#expr.new
62
- [intro.multithread]: intro.md#intro.multithread
63
  [lex.digraph]: lex.md#lex.digraph
 
64
  [lex.name]: lex.md#lex.name
65
  [lex.phases]: lex.md#lex.phases
66
  [lex.token]: lex.md#lex.token
67
- [support.limits]: language.md#support.limits
 
 
68
 
69
  [^1]: Thus, preprocessing directives are commonly called “lines”. These
70
  “lines” have no other syntactic significance, as all white space is
71
  equivalent except in certain situations during preprocessing (see
72
  the `#` character string literal creation operator in 
@@ -79,22 +87,22 @@ LISTING( ..\listing.dir )
79
  [^3]: As indicated by the syntax, a preprocessing token shall not follow
80
  a `#else` or `#endif` directive before the terminating new-line
81
  character. However, comments may appear anywhere in a source file,
82
  including within a preprocessing directive.
83
 
84
- [^4]: Note that adjacent string literals are not concatenated into a
85
- single string literal (see the translation phases in 
86
- [[lex.phases]]); thus, an expansion that results in two string
87
- literals is an invalid directive.
88
 
89
- [^5]: Since, by macro-replacement time, all character literals and
90
- string literals are preprocessing tokens, not sequences possibly
91
  containing identifier-like subsequences (see [[lex.phases]],
92
  translation phases), they are never scanned for macro names or
93
  parameters.
94
 
95
- [^6]: An alternative token ([[lex.digraph]]) is not an identifier, even
96
  when its spelling consists entirely of letters and underscores.
97
  Therefore it is not possible to define a macro whose name is the
98
  same as that of an alternative token.
99
 
100
  [^7]: A *conditionally-supported-directive* is a preprocessing directive
@@ -102,14 +110,9 @@ LISTING( ..\listing.dir )
102
 
103
  [^8]: Placemarker preprocessing tokens do not appear in the syntax
104
  because they are temporary entities that exist only within
105
  translation phase 4.
106
 
107
- [^9]: It is intended that future versions of this International Standard
108
- will replace the value of this macro with a greater value.
109
- Non-conforming compilers should use a value with at most five
110
- decimal digits.
111
-
112
- [^10]: The presumed source file name can be changed by the `#line`
113
  directive.
114
 
115
- [^11]: The presumed line number can be changed by the `#line` directive.
 
4
 
5
  ``` bnf
6
  '_Pragma' '(' string-literal ')'
7
  ```
8
 
9
+ is processed as follows: The *string-literal* is *destringized* by
10
  deleting the `L` prefix, if present, deleting the leading and trailing
11
  double-quotes, replacing each escape sequence `\"` by a double-quote,
12
  and replacing each escape sequence `\\` by a single backslash. The
13
  resulting sequence of characters is processed through translation phase
14
  3 to produce preprocessing tokens that are executed as if they were the
 
42
  <!-- Link reference definitions -->
43
  [basic.stc.dynamic.safety]: basic.md#basic.stc.dynamic.safety
44
  [cpp]: #cpp
45
  [cpp.concat]: #cpp.concat
46
  [cpp.cond]: #cpp.cond
47
+ [cpp.cond.ha]: #cpp.cond.ha
48
  [cpp.error]: #cpp.error
49
+ [cpp.import]: #cpp.import
50
  [cpp.include]: #cpp.include
51
  [cpp.line]: #cpp.line
52
+ [cpp.module]: #cpp.module
53
  [cpp.null]: #cpp.null
54
  [cpp.pragma]: #cpp.pragma
55
  [cpp.pragma.op]: #cpp.pragma.op
56
+ [cpp.pre]: #cpp.pre
57
  [cpp.predefined]: #cpp.predefined
58
+ [cpp.predefined.ft]: #cpp.predefined.ft
59
  [cpp.replace]: #cpp.replace
60
  [cpp.rescan]: #cpp.rescan
61
  [cpp.scope]: #cpp.scope
62
  [cpp.stringize]: #cpp.stringize
63
  [cpp.subst]: #cpp.subst
64
+ [cstdint]: support.md#cstdint
65
  [expr.const]: expr.md#expr.const
66
  [expr.new]: expr.md#expr.new
67
+ [intro.multithread]: basic.md#intro.multithread
68
  [lex.digraph]: lex.md#lex.digraph
69
+ [lex.key]: lex.md#lex.key
70
  [lex.name]: lex.md#lex.name
71
  [lex.phases]: lex.md#lex.phases
72
  [lex.token]: lex.md#lex.token
73
+ [module.import]: module.md#module.import
74
+ [stmt.if]: stmt.md#stmt.if
75
+ [support.limits]: support.md#support.limits
76
 
77
  [^1]: Thus, preprocessing directives are commonly called “lines”. These
78
  “lines” have no other syntactic significance, as all white space is
79
  equivalent except in certain situations during preprocessing (see
80
  the `#` character string literal creation operator in 
 
87
  [^3]: As indicated by the syntax, a preprocessing token shall not follow
88
  a `#else` or `#endif` directive before the terminating new-line
89
  character. However, comments may appear anywhere in a source file,
90
  including within a preprocessing directive.
91
 
92
+ [^4]: Note that adjacent *string-literal*s are not concatenated into a
93
+ single *string-literal* (see the translation phases in 
94
+ [[lex.phases]]); thus, an expansion that results in two
95
+ *string-literal*s is an invalid directive.
96
 
97
+ [^5]: Since, by macro-replacement time, all *character-literal*s and
98
+ *string-literal*s are preprocessing tokens, not sequences possibly
99
  containing identifier-like subsequences (see [[lex.phases]],
100
  translation phases), they are never scanned for macro names or
101
  parameters.
102
 
103
+ [^6]: An alternative token [[lex.digraph]] is not an identifier, even
104
  when its spelling consists entirely of letters and underscores.
105
  Therefore it is not possible to define a macro whose name is the
106
  same as that of an alternative token.
107
 
108
  [^7]: A *conditionally-supported-directive* is a preprocessing directive
 
110
 
111
  [^8]: Placemarker preprocessing tokens do not appear in the syntax
112
  because they are temporary entities that exist only within
113
  translation phase 4.
114
 
115
+ [^9]: The presumed source file name can be changed by the `#line`
 
 
 
 
 
116
  directive.
117
 
118
+ [^10]: The presumed line number can be changed by the `#line` directive.