📜  C#-预处理程序指令

📅  最后修改于: 2020-12-28 05:10:25             🧑  作者: Mango


预处理程序指令向编译器发出指令,以在实际编译开始之前对信息进行预处理。

所有预处理程序指令均以#开头,并且一行上的预处理程序指令之前只能出现空格字符。预处理程序指令不是语句,因此它们不以分号(;)结尾。

C#编译器没有单独的预处理器;但是,伪指令的处理就像是一条伪指令。在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预处理程序指令创建符号常量。

#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