Директива #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