C#预处理指令
定义符号和删除符号的意义在于编译器可以根据它们来判断是否编译某段代码。一般应用于软件版本的确定。一个软件不同的版本编译不同的代码块。
#define 定义符号
#undef 删除符号
#if、#elif、#else、#endif
它们告诉编译器是否要编译某个代码段。
一般是调试时定义DEBUG,把不同的调试代码段放到#if子句中,调试完成后,注释掉它们。
下面是一个完整的例子
#if还支持一组逻辑符号
#Warning 警告、#Error错误
如果编译时遇到#Warning会给用户显示后面的文本,如果编译时遇到#Error会显示后面文本并退出编译。
#region、#endregion 给代码块命名
#define 定义符号
#define DEBUG
#undef 删除符号
#undef DEBUG
#if、#elif、#else、#endif
它们告诉编译器是否要编译某个代码段。
#define DEBUG
#if DEBUG
//do something
#endif
#if DEBUG
//do something
#endif
一般是调试时定义DEBUG,把不同的调试代码段放到#if子句中,调试完成后,注释掉它们。
下面是一个完整的例子
#define ENTERPRISE
#define WINDOWS2K
#if ENTERPRISE
//do something
#if WINDOWS2K
//some code that is only relevant to enterprise
//edition running on Windows2000
#endif
#elif PROFESSIONAL
//do something else
#else
//code for the leaner version
#endif
注意:在C++中还有另一种条件编译的方式,Conditional机制。#define WINDOWS2K
#if ENTERPRISE
//do something
#if WINDOWS2K
//some code that is only relevant to enterprise
//edition running on Windows2000
#endif
#elif PROFESSIONAL
//do something else
#else
//code for the leaner version
#endif
#if还支持一组逻辑符号
#if WINDOWS2K && (ENTERPRISE == false) //if Windows2000 is defined but enterprise isn`t
#Warning 警告、#Error错误
如果编译时遇到#Warning会给用户显示后面的文本,如果编译时遇到#Error会显示后面文本并退出编译。
#if DEBUG && RELEASE
#error "You`ve defined DEBUG and RELEASE simultaneously!"
#endif
#warning "Don`t forget to remove this line before the boss tests the code!"
Console.Write("*I hate this job*");
#error "You`ve defined DEBUG and RELEASE simultaneously!"
#endif
#warning "Don`t forget to remove this line before the boss tests the code!"
Console.Write("*I hate this job*");
#region、#endregion 给代码块命名
#region Member Field Declarations
int x;
double d;
Currency balance;
#endregion
int x;
double d;
Currency balance;
#endregion
#line 改变编译时出现警告和错误信息中显示的文件名和行号。
如果在编译之前,要使用某些软件包改变键入的代码就可以使用这个指令,因为这意味着编译器报告的行号或文件名与文件中的行号或编辑的文件名不匹配。#line可以用于恢复这种匹配。也可以使用#line default把行号恢复为默认行号。
#line 164 "Core.cs" //we happen to know this is line 164 in the file
//Core.cs, before the intermediate
//package mangles it.
//later on
#line default //restores default line numbering
//Core.cs, before the intermediate
//package mangles it.
//later on
#line default //restores default line numbering