行指令可用于改变编译器在输出(如警告和错误)中报告的行号和源文件名称。 行指令最通用于从某些其他文本输入生成 C# 源代码的元编程工具。 - pp-line:(pp 行:)
- whitespaceopt # whitespaceopt line whitespace line-indicator pp-new-line(空白可选 # 空白可选 line 空白 行指示符 pp 新行)
- line-indicator:(行指示符:)
- decimal-digits whitespace file-name(十进制数字 空白 文件名)
decimal-digits(十进制数字) default hidden - file-name:(文件名:)
- " file-name-characters "(" 文件名字符 ")
- file-name-characters:(文件名字符:)
- file-name-character(文件名字符)
file-name-characters file-name-character(文件名字符 文件名字符) - file-name-character:(文件名字符:)
- 除 " 外的任何输入字符
当不存在 #line 指令时,编译器在它的输出中报告真实的行号和源文件名称。#line 指令最通用于从某些其他文本输入生成 C# 源代码的元编程工具。当处理的 #line 指令包含不是 default 的行指示符时,编译器将该指令“后面”的行视为具有给定的行号(如果指定了,还包括文件名)。 #line default 指令消除前面所有 #line 指令的影响。编译器报告后续行的真实行信息,就像尚未处理任何 #line 指令一样。
#line hidden 指令对错误信息中报告的文件号和行号无效,但对源代码级调试确实有效。调试时,#line hidden 指令和后面的 #line 指令(不是 #line hidden )之间的所有行都没有行号信息。在调试器中逐句执行代码时,将全部跳过这些行。
注意,file-name(文件名)与常规字符串的不同之处在于不处理转义字符;“/”字符在 file-name(文件名)中只是表示一个普通的反斜杆字符。  
|