复制代码
#if W2K && (ENTERPRISE==false) // if W2K is defined but ENTERPRISE isn't
3. #warning 和 #error
另两个非常有用的预处理器指令是#warning 和#error,当编译器遇到它们时,会分别产生警告或错误。如果编译器遇到#warning 指令,会给用户显示#warning 指令后面的文本,之后编译继续进行。如果编译器遇到#error 指令,就会给用户显示后面的文本,作为一条编译错误消息,然后会立即退出编译,不会生成IL 代码。
使用这两条指令可以检查#define 语句是不是做错了什么事,使用#warning 语句可以提醒自己执行某个操作:
复制代码
#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.WriteLine("*I hate this job.*");
4. #region 和#endregion
#region 和#endregion 指令用于把一段代码标记为有给定名称的一个块,如下所示。
复制代码
#region Member Field Declarations
int x;
double d;
Currency balance;
#endregion
这看起来似乎没有什么用,它不影响编译过程。这些指令的优点是它们可以被某些编辑器识别,包括Visual Studio .NET 编辑器。这些编辑器可以使用这些指令使代码在屏幕上更好地布局。
5. #line
#line 指令可以用于改变编译器在警告和错误信息中显示的文件名和行号信息。这条指令用得并不多。
如果编写代码时,在把代码发送给编译器前,要使用某些软件包改变输入的代码,就可以使用这个指令,因为这意味着编译器报告的行号或文件名与文件中的行号或编辑的文件名不匹配。
#line 指令可以用于还原这种匹配。也可以使用语法#line default 把行号还原为默认的行号:
复制代码
#line 164 "Core.cs" // We happen to know this is line 164 in the file
// Core.cs, before the intermediate










