Учебники

C # — Директивы препроцессора

Директивы препроцессора дают команду компилятору предварительно обработать информацию перед началом фактической компиляции.

Все директивы препроцессора начинаются с #, и перед директивой препроцессора в строке могут появляться только символы пробела. Директивы препроцессора не являются операторами, поэтому они не заканчиваются точкой с запятой (;).

Компилятор C # не имеет отдельного препроцессора; однако директивы обрабатываются так, как если бы они были. В C # директивы препроцессора используются для помощи в условной компиляции. В отличие от директив C и C ++, они не используются для создания макросов. Директива препроцессора должна быть единственной инструкцией в строке.

Директивы препроцессора в C #

В следующей таблице перечислены директивы препроцессора, доступные в C # —

Sr.No. Директива препроцессора и описание
1

#define

Он определяет последовательность символов, называемых символом.

2

#undef

Это позволяет вам определить символ.

3

#если

Это позволяет протестировать символ или символы, чтобы увидеть, оценивают ли они значение true.

4

#else

Это позволяет создать составную условную директиву вместе с #if.

5

#elif

Это позволяет создать составную условную директиву.

6

#endif

Определяет конец условной директивы.

7

#линия

Это позволяет вам изменить номер строки компилятора и (опционально) вывод имени файла для ошибок и предупреждений.

8

#ошибка

Это позволяет генерировать ошибку из определенного места в вашем коде.

9

#предупреждение

Это позволяет генерировать предупреждение первого уровня из определенного места в вашем коде.

10

#область, край

Он позволяет указать блок кода, который можно развернуть или свернуть при использовании функции выделения в редакторе кода Visual Studio.

11

#endregion

Это отмечает конец блока #region.

#define

Он определяет последовательность символов, называемых символом.

#undef

Это позволяет вам определить символ.

#если

Это позволяет протестировать символ или символы, чтобы увидеть, оценивают ли они значение true.

#else

Это позволяет создать составную условную директиву вместе с #if.

#elif

Это позволяет создать составную условную директиву.

#endif

Определяет конец условной директивы.

#линия

Это позволяет вам изменить номер строки компилятора и (опционально) вывод имени файла для ошибок и предупреждений.

#ошибка

Это позволяет генерировать ошибку из определенного места в вашем коде.

#предупреждение

Это позволяет генерировать предупреждение первого уровня из определенного места в вашем коде.

#область, край

Он позволяет указать блок кода, который можно развернуть или свернуть при использовании функции выделения в редакторе кода Visual Studio.

#endregion

Это отмечает конец блока #region.

Препроцессор #define

Директива препроцессора #define создает символические константы.

#define позволяет вам определить символ так, чтобы, используя символ в качестве выражения, переданного директиве #if, выражение оценивалось как true. Его синтаксис выглядит следующим образом —

#define symbol

Следующая программа иллюстрирует это —

Live Demo

#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 и следующей директивой.

Синтаксис для условной директивы —

#if symbol [operator symbol]...

Где символ — это имя символа, который вы хотите проверить. Вы также можете использовать true и false или добавить символ перед оператором отрицания.

Символ оператора — это оператор, используемый для оценки символа. Операторы могут быть следующими:

  • == (равенство)
  • ! = (неравенство)
  • && (а также)
  • || (или же)

Вы также можете группировать символы и операторы в скобках. Условные директивы используются для компиляции кода для отладочной сборки или при компиляции для конкретной конфигурации. Условная директива, начинающаяся с директивы #if, должна явно заканчиваться директивой #endif .

Следующая программа демонстрирует использование условных директив —

Live Demo

#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();
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —