C# 预处理程序指令
-
预处理程序指令
预处理程序指令向编译器发出指令,以在实际编译开始之前对信息进行预处理。所有预处理程序指令均以#开头,并且一行上的预处理程序指令之前只能出现空格字符。预处理程序指令不是语句,因此它们不以分号(;)结尾。C# 编译器没有单独的预处理程序;但是,伪指令的处理就像是一条伪指令。在C# 中,预处理器指令用于帮助条件编译。与C和C++指令不同,它们不用于创建宏。预处理器指令必须是一行上的唯一指令。 -
C# 中的预处理程序指令
下表列出了C# 中可用的预处理器指令-预处理程序指令 说明 #define 它定义了一系列字符,称为符号。 #undef 它允许您取消定义符号。 #if 它允许测试一个或多个符号以查看它们的评估结果是否为真。 #else 它允许与#if一起创建复合条件指令。 #elif 它允许创建复合条件指令。 #endif 指定条件指令的结尾。 #line 它使您可以修改编译器的行号以及(可选)文件输出的错误和警告信息。 #error 它允许从代码中的特定位置生成错误。 #warning 它允许从代码中的特定位置生成一级警告。 #region 它允许您指定使用Visual Studio代码编辑器的大纲功能时可以扩展或折叠的代码块。 #endregion 它标志着#region块的结束。 -
#define预处理程序
#define 预处理程序指令创建符号常量。#define 允许您定义一个符号,从而通过将该符号用作传递给#if指令的表达式,该表达式的计算结果为true。它的语法如下-#define symbol
以下程序说明了这一点-
尝试一下#define PI using System; namespace PreprocessorDAppl { class Program { static void Main(string[] args) { #if (PI) Console.WriteLine("PI is defined"); #else Console.WriteLine("PI is not defined"); #endif Console.ReadKey(); } } }
编译并执行上述代码后,将产生以下结果-PI is defined
-
条件指令
您可以使用#if指令创建条件指令。条件指令可用于测试一个或多个符号以检查其值是否为true。如果它们的评估结果为true,则编译器将评估#if和next指令之间的所有代码。条件指令的语法是-#if symbol [operator symbol]...
其中,symbol是要测试的符号的名称。您还可以使用true和false或在符号前加上取反运算符。该运算符号是用于评估的符号操作。运算符可以是以下任一种-- == (相等)
- != (不等)
- && (and)
- || (or)
您也可以用括号将符号和运算符分组。条件指令用于为调试版本或为特定配置进行编译时编译代码。以#if指令开头的条件指令必须以#endif指令显式终止。以下程序演示了条件指令的使用-
尝试一下#define DEBUG #define VC_V10 using System; public class TestClass { public static void Main() { #if (DEBUG && !VC_V10) Console.WriteLine("DEBUG is defined"); #elif (!DEBUG && VC_V10) Console.WriteLine("VC_V10 is defined"); #elif (DEBUG && VC_V10) Console.WriteLine("DEBUG and VC_V10 are defined"); #else Console.WriteLine("DEBUG and VC_V10 are not defined"); #endif Console.ReadKey(); } }
编译并执行上述代码后,将产生以下结果-DEBUG and VC_V10 are defined