2.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.
Line directives are most commonly used in meta-programming tools that generate C# source code from some other text input.
- whitespaceopt # whitespaceopt line whitespace line-indicator pp-new-line
- decimal-digits whitespace file-name
- " file-name-characters "
- Any input-character except "
#line directives are present, the compiler reports true line numbers and source file names in its output. The
#line directive is most commonly used in meta-programming tools that generate C# source code from some other text input. 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).
#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.
#line hidden directive has no effect on the file and line numbers reported in error messages, but does affect source level debugging. When debugging, all lines between a
#line hidden directive and the subsequent
#line directive (that is not
#line hidden) have no line number information. When stepping through code in the debugger, these lines will be skipped entirely.
Note that a file-name differs from a regular string literal in that escape characters are not processed; the '\' character simply designates an ordinary backslash character within a file-name.