9.5.7 Line directives
9.5.7 Line directives
Line directives may be used to alter the line numbers and source file names
that are reported by the compiler in
output such as warnings and errors.
[Note: Line directives are most commonly used in meta-programming tools
that generate C# source code from
some other text input. end note]
pp-line::
whitespaceopt # whitespaceopt line whitespace line-indicator pp-new-line
line-indicator::
decimal-digits whitespace file-name
decimal-digits
default
file-name::
" file-name-characters "
file-name-characters::
file-name-character
file-name-characters file-name-character
file-name-character::
Any character except " (U+0022), and new-line
When no #line directives are present, the compiler reports true line
numbers and source file names in its output.
When processing a #line directive that includes a line-indicator that is
not default, the compiler treats the line
after the directive as having the given line number (and file name, if
specified).
A #line default directive reverses the effect of all preceding #line
directives. The compiler reports true line
information for subsequent lines, precisely as if no #line directives had
been processed.
[Note: Note that a file-name differs from a regular string literal in that
escape characters are not processed; the
.\. character simply designates an ordinary back-slash character within a
file-name. end note]