Looking for c# Answers? Try Ask4KnowledgeBase
Looking for c# Keywords? Try Ask4Keywords

C# LanguageПрепроцессорные директивы


Синтаксис

  • #define [symbol] // Определяет символ компилятора.
  • #undef [symbol] // Undefine символ компилятора.
  • #warning [warning message] // Создает предупреждение компилятора. Полезно с #if.
  • #error [сообщение об ошибке] // Создает ошибку компилятора. Полезно с #if.
  • #line [номер строки] (имя файла) // Переопределяет номер строки компилятора (и, возможно, имя исходного файла). Используется с текстовыми шаблонами T4 .
  • #pragma warning [disable | restore] [warning numbers] // Отключает / восстанавливает предупреждения компилятора.
  • #pragma checksum " [filename] " " [guid] " " [checksum] " // Проверяет содержимое исходного файла.
  • #region [имя региона] // Определяет область складного кода.
  • #endregion // Заканчивает блок области кода.
  • #if [condition] // Выполняет код ниже, если условие истинно.
  • #else // Используется после #if.
  • #elif [condition] // Используется после #if.
  • #endif // Завершает условный блок, начинающийся с #if.

замечания

Директивы препроцессора обычно используются для облегчения преобразования исходных программ и их легкой компиляции в разных средах исполнения. Директивы в исходном файле сообщают препроцессору выполнять определенные действия. Например, препроцессор может заменить токены в тексте, вставить содержимое других файлов в исходный файл или подавить компиляцию части файла, удалив разделы текста. Линии препроцессора распознаются и выполняются перед расширением макроса. Поэтому, если макрос расширяется во что-то, что выглядит как команда препроцессора, эта команда не распознается препроцессором.

Операторы препроцессора используют тот же набор символов, что и для операторов исходного файла, за исключением того, что escape-последовательности не поддерживаются. Набор символов, используемый в инструкциях препроцессора, совпадает с набором символов выполнения. Препроцессор также распознает отрицательные значения символов.

Условные выражения

Условные выражения ( #if , #elif и т. Д.) Поддерживают ограниченное подмножество булевых операторов. Они есть:

  • == и != . Они могут использоваться только для проверки того, является ли символ истинным (определенным) или ложным (не определено)
  • && , || , !
  • ()

Например:

#if !DEBUG && (SOME_SYMBOL || SOME_OTHER_SYMBOL) && RELEASE == true
Console.WriteLine("OK!");
#endif

будет компилировать код, который печатает "OK!" на консоль, если DEBUG не определен, определяется SOME_SYMBOL или SOME_OTHER_SYMBOL , и определен RELEASE .

Примечание. Эти замены выполняются во время компиляции и поэтому недоступны для проверки во время выполнения. Код, исключенный с помощью #if , не является частью выхода компилятора.

См. Также: Директивы препроцессора C # в MSDN.

Препроцессорные директивы Связанные примеры