C# 语言规范--2.5.7 行指令

发表于:2007-07-14来源:作者:点击数: 标签:
C# 语言规范--2.5.7 行指令: 行指令可用于改变编译器在输出(如警告和错误)中报告的行号和源文件名称。 行指令最通用于从某些其他文本输入生成 C# 源代码的元编程工具。 pp-line: (pp 行:) whitespace opt # whitespace opt line whitespaceline-indica
C# 语言规范--2.5.7 行指令:

行指令可用于改变编译器在输出(如警告和错误)中报告的行号和源文件名称。

行指令最通用于从某些其他文本输入生成 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(文件名)中只是表示一个普通的反斜杆字符。



原文转自:http://www.ltesting.net