📅  最后修改于: 2020-12-28 05:10:25             🧑  作者: Mango
预处理程序指令向编译器发出指令,以在实际编译开始之前对信息进行预处理。
所有预处理程序指令均以#开头,并且一行上的预处理程序指令之前只能出现空格字符。预处理程序指令不是语句,因此它们不以分号(;)结尾。
C#编译器没有单独的预处理器;但是,伪指令的处理就像是一条伪指令。在C#中,预处理器指令用于帮助条件编译。与C和C++指令不同,它们不用于创建宏。预处理器指令必须是一行上的唯一指令。
下表列出了C#中可用的预处理器指令-
Sr.No. | Preprocessor Directive & Description |
---|---|
1 |
#define It defines a sequence of characters, called symbol. |
2 |
#undef It allows you to undefine a symbol. |
3 |
#if It allows testing a symbol or symbols to see if they evaluate to true. |
4 |
#else It allows to create a compound conditional directive, along with #if. |
5 |
#elif It allows creating a compound conditional directive. |
6 |
#endif Specifies the end of a conditional directive. |
7 |
#line It lets you modify the compiler’s line number and (optionally) the file name output for errors and warnings. |
8 |
#error It allows generating an error from a specific location in your code. |
9 |
#warning It allows generating a level one warning from a specific location in your code. |
10 |
#region It lets you specify a block of code that you can expand or collapse when using the outlining feature of the Visual Studio Code Editor. |
11 |
#endregion It marks the end of a #region block. |
#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或在符号前加上取反运算符。
运算符符号是用于评估符号的运算符。运算符可以是以下任一种-
您也可以用括号将符号和运算符分组。条件伪指令用于为调试版本或为特定配置进行编译时编译代码。以#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