- C#实践教程(第2版)
- 李乃文
- 902字
- 2025-03-01 13:31:20
2.10 预处理命令
C#中有着预编译指令,支持条件编译、警告、错误报告和编译行控制等。可用的预处理指令如下所示。
□ #define symbol
□ #undef symbol
□ #if symbol [operator symbol2]
□ #else
□ #elif symbol [operator symbol2]
□ #endif
□ #warning text text指在编译器中输出的警告文字
□ #error text text指在编译器中输出的错误信息
□ #line number [file]
1. #region和#endregion
上述预处理指令中,最为常用的是#region和#endregion指令。这两个指令的组合,可以把一段代码标记为给定名称的一个块。将块所实现的功能写在#region行中,即为该块的名称。
如定义一个函数,接收一个字符串类型参数,用于输出传入的参数值。创建控制台应用程序,如练习2-7所示。
【练习2-7】
定义一个方法,使用#region和#endregion指令将其包含在内。在#region指令后的同一行,写下对方法的解释“输出字符串”,如图2-8所示。写好后,#region指令左侧有“-”标记,单击该标记,如图2-9所示。该方法被显示为一个矩形框,显示该方法的解释。

图2-8 写入#region指令

图2-9 #region指令效果
如图2-9所示,该方法以一种更直观的方式显示给开发人员。当项目中程序较多时,通过这种方式,可以使程序清晰可观,方便阅读。
2. #define和#undef
#define类似于声明一个变量,但是这个变量没有真正的值,只是存在而已。代码没有任何的意义仅仅是在编译器编译代码的时候存在。
#undef相反,删除符号定义。如果这个符号不存在,这句话就没有任何意义,如果这个符号存在,#define也不起作用。
注意
声明的时候需要在第一行代码处声明且不需要分号结尾,不能放在代码的中间!
3. #if、#elif、#else、#endif
这些指令告诉编译器是否需要编译某个代码块,在#if后面写语句块执行的条件,而在#if与#endif中间,写该条件下执行的语句块。其格式如下所示:
#if 执行条件 该条件下执行的语句块 #endif
#elif与#if和#else嵌套使用,增加语句块执行的条件。它们必须以#endif来结尾。其语法如下:
#if 执行条件1 该条件下执行的语句块 #elif执行条件2(在不满足执行条件1的情况下) 执行语句块 #else 执行语句块 #endif
4. #warning 和#error
当编译器遇见#warning和#error的时候分别产生警告和错误,以及给用户显示#warning后面的文本信息,并且继续进行;如果编译器遇见#error指令,就会输出用户自定义的错误消息,作为一个编译错误信息,然后立即退出编译,不会生成代码。
5. #pragma
#pragma指令可以抑制或者是恢复指定的编译警告。和命令行选项不同,#pragma指令可以在类或者方法上执行,对抑制警告的内容和抑制的时间进行更加精细的控制。