预处理程序指令

预处理程序指令通常用于使源程序易于更改,并且易于在不同的执行环境中编译。源文件中的指令告诉预处理器执行特定操作。例如,预处理器可以替换文本中的标记,将其他文件的内容插入到源文件中,或者通过删除文本部分来禁止编译部分文件。在宏扩展之前识别并执行预处理器行。因此,如果宏扩展为看起来像预处理器命令的内容,则预处理器无法识别该命令。

预处理程序语句使用与源文件语句相同的字符集,但不支持转义序列。预处理程序语句中使用的字符集与执行字符集相同。预处理器还可识别负字符值。

条件表达式

条件表达式(#if#elif 等)确实支持布尔运算符的有限子集。他们是:

  • ==!=。这些只能用于测试符号是真(定义)还是假(未定义)
  • &&||!
  • ()

例如:

#if !DEBUG && (SOME_SYMBOL || SOME_OTHER_SYMBOL) && RELEASE == true
Console.WriteLine("OK!");
#endif

会编译打印“OK!”的代码。如果未定义 DEBUG,则向控制台定义 SOME_SYMBOLSOME_OTHER_SYMBOL,并定义 RELEASE

注意:这些替换在编译时完成*,*因此无法在运行时进行检查。通过使用 #if 消除的代码不是编译器输出的一部分。

另请参阅: MSDN 上的 C#预处理器指令