Директивы препроцессора дают команду компилятору предварительно обработать информацию перед началом фактической компиляции.
Все директивы препроцессора начинаются с #, и перед директивой препроцессора в строке могут появляться только символы пробела. Директивы препроцессора не являются операторами, поэтому они не заканчиваются точкой с запятой (;).
Компилятор 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
Следующая программа иллюстрирует это —
#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 .
Следующая программа демонстрирует использование условных директив —
#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(); } }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —