Поделиться через


Директива #undef (C/C++)

Удаляет имя, ранее созданное с помощью #define, то есть отменяет его определение.

#undef identifier

Заметки

Директива #undef удаляет текущее определение идентификатора. Следовательно, последующие вхождения идентификатора игнорируются препроцессором. Чтобы удалить определение макроса с помощью #undef, присвойте только идентификатор макроса; не предоставляйте список параметров.

Также можно применить директиву #undef к идентификатору, который не имеет предыдущего определения. Это гарантирует, что идентификатор не определен. Замена макроса не выполняется внутри инструкций #undef.

Директива #undef обычно связана с директивой #define для создания области в программе-источнике, в которой идентификатор имеет специальное значение. Например, определенная функция программы-источника может использовать константы манифестов для определения значений среды, которые не влияют на остальные части программы. Директива #undef также работает с директивой #if с целью контроля условной компиляции программы-источника. Дополнительные сведения см. в разделе Директивы #if, #elif, #else и #endif.

В следующем примере директива #undef удаляет определения символической константы и макрос. Обратите внимание, что предоставляется только идентификатор макроса.

#define WIDTH 80
#define ADD( X, Y ) ((X) + (Y))
.
.
.
#undef WIDTH
#undef ADD

Блок, относящийся только к системам Microsoft

Отменить определение макросов можно из командной строки с использованием параметра /U, за которым следуют имена макросов, определения которых нужно отменить. Создание этой команды по результату эквивалентно последовательности инструкций имя-макроса #undef в начале файла.

Завершение блока, относящегося только к системам Microsoft

См. также

Ссылки

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