预处理指令规则
(1)预处理指令必须和C#代码在不同的行
(2)与C#语句不同,预处理指令不需要以分号结尾
(3)包含预处理指令的每一行必须以#字符开始,在#字符前可以有空格,在#字符和指令之间可以有空格
(4)允许行尾注释,但是在预处理指令所在的行不允许分隔符注释(/**/)
#define和#undef指令
编译符号是只有俩种可能状态的标识符,要么被定义,要么未被定义。编译符号有如下特性:
(1)它可以是除了true或false以外的任何标识符,包括C#关键字,以及在C#代码中声明的标识符,这俩者都是可以的
(2)它没有值,与C++不同,它不表示字符串
(3)#define指令声明一个编译符号
(4)#undef指令取消定义一个编译符号
(5)#define和#undef指令只能用在源文件的第一行,也就是任何C#代码之前使用,在C#代码开始后,#define和#undef指令就不能再使用
诊断指令(warning、error)
#warning Message
#error Message
Message是字符串,但是它与普通的字符串不同,它们不需要被引号包围,当编译器遇到诊断指令时,它会输出相关信息,诊断指令的消息会和任何编译器产生的警告和错误消息列在一起
行号指令(line)
行号指令的作用:
(1)改变由编译器警告和错误消息报告的出现行数
(2)改变被编译源文件的文件名
(3)对交互式调试器隐藏一些行
区域指令(region、endregion)
区域指令允许我们标注和有选择性地命名一段代码,#region指令的特性如下
(1)被放置在希望标注的代码之上
(2)用指令后的可选字符串文本作为其名字
(3)之后的代码中必须由#endregion指令终止
#pragma warning指令
#pragma warning指令允许我们关闭及重新开启警告消息。
#pragma warning disable 618, 414 //关闭618、414这俩个警告消息
#pragma warning restore 618 //开启618这个警告消息
#pragma warning disable //所有警告消息在这段代码中处于关闭状态
#pragma warning restore //所有警告消息在这段代码中处于开启状态