在最开始接触预处理指令时,是使用#region和#endregion,可以折叠代码块,方便查看。使用它可以将隶属于一个小模块的内容放到一起,折叠起来,只有在查看的时候再打开,有强迫症的应该会很喜欢。看书刚好翻到了这,就把这部分记录下来,给自己提个醒。
预处理器指令不会转化为可执行代码,而是影响代码的编译过程,可以有选择性的进行编译,这里就有一个条件编译的概念。按我的理解,就是可执行文件生成后,预处理器命令就不存在了,它影响的是生成可执行文件的过程,它告诉编译器哪些代码需要编译,哪些代码不需要。它不会修改代码的功能,但它可以在编译阶段指定哪一部分代码进行编译,也就是最终生成的可执行文件中具有怎样的功能。它的作用在编译时得到体现。
- #define和#undef:作用是告诉编译器存在给定名称的变量,也就相当于普通的变量定义,可以和其他命令一起完成条件编译
- #if,#elif,#else,#endif:通过判断#define定义的变量,有选择性的编译代码块,从而达到条件编译的目的
- #warning和#error:可以通过这两个指令来判断预处理器命令是否正常书写,有无逻辑错误,warning还可以提醒执行某个操作。
- #region和#endregion:定义:将一段代码标记为有给定名称的一个块,作用是可以被某些编辑器识别,从而实现更好的布局。就我而言,就是用来折叠代码块的。#
- #line:改变编译器在警告和错误信息中显示的文件名和行号信息
- #pragma:抑制或还原指定的编译警告
总的来说,1,2,3条可以用来实现条件编译。4折叠代码块,56就目前而言,我没看出来有多大的作用。
C#不止可以使用预处理命令完成条件编译,但C#还可以通过Conditional特性来实现,以现在来看,后种方式反而更是一种趋势。