С помощью директивы #undef
удаляется определенный ранее идентификатор. Это, по существу, означает, что он становится "неопределенным". Ниже приведена общая форма директивы #undef
.
#undef
Рассмотрим следующий пример кода.
#define SMALL
#if SMALL
// . . .
#undef SMALL
// теперь идентификатор SMALL не определен.
После директивы #undef
идентификатор SMALL уже оказывается неопределенным.
Директива #undef
применяется главным образом для локализации идентификаторов только в тех фрагментах кода, в которых они действительно требуются.
Директива #error
вынуждает компилятор прервать компиляцию. Она служит в основном для отладки. Ниже приведена общая форма директивы #error
.
#еrror сообщение_об_ошибке
Когда в коде встречается директива terror, выводится сообщение об ошибке. Например, когда компилятору встречается строка кода
#еrror Это тестовая ошибка!
компиляция прерывается и выводится сообщение "Это тестовая ошибка ! "
.
Директива #warning
действует аналогично директиве #error
, за исключением того, что она выводит предупреждение, а не ошибку. Следовательно, компиляция не прерывается. Ниже приведена общая форма директивы #warning
.
#warning предупреждающее_сообщение
Директива #line
задает номер строки и имя файла, содержащего эту директиву. Номер строки и имя файла используются при выводе ошибок или предупреждений во время компиляции. Ниже приведена общая форма директивы #line
.
#line номер ”имя_файла"
Имеются еще два варианта директивы #line
. В первом из них она указывается с ключевым словом default
, обозначающим возврат нумерации строк в исходное состояние, как в приведенном ниже примере.
#line default
А во втором варианте директива #line указывается с ключевым словом hidden
. При пошаговой отладке программы строки кода, находящиеся между директивой
#line hidden
и следующей директивой #line
без ключевого слова hidden
, пропускаются отладчиком.
С помощью директив #region
и #endregion
определяется область, которая разворачивается или сворачивается при структурировании исходного кода в интегрированной среде разработки Visual Studio. Ниже приведена общая форма этих директив:
#region текст
// последовательность кода
#endregion текст
где
С помощью директивы #pragma
инструкции задаются компилятору в виде опций. Ниже приведена общая форма этой директивы:
#pragma опция
где
В текущей версии C# предусмотрены две опции для директивы #pragma
. Первая из них, warning
, служит для разрешения или запрета отдельных предупреждений со стороны компилятора. Она принимает две формы:
#pragma warning disable предупреждения
#pragma warning restore предупреждения
где disable
, а для его разрешения — опция restore
.
Например, в приведенной ниже директиве #pragma
запрещается выдача предупреждения №168, уведомляющего о том, что переменная объявлена, но не используется.
#pragma warning disable 168
Второй для директивы #pragma
является опция checksum
. Она служит для формирования контрольной суммы в проектах ASP.NET. Ниже приведена ее общая форма:
#pragma checksum "имя_файла" "{GUID}" "контрольная_сумма"
где
Сборки и модификатор доступа internal