Отмена макроподстановки (#undef)

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

#undef макро_идентификатор

В частности, она полезна, если в разных частях кода требуется определить один и тот же макрос по-разному. Если идентификатор, указанный в #define, уже был зарегистрирован где-то в более ранних строках кода (другой директивой #define), то старое определение заменяется на новое, а препроцессор выдает предупреждение "переопределение макроса" ("macro redefinition"). Использование #undef позволяет избавиться от предупреждения, и явным образом документирует намерение программиста не использовать дальше по коду конкретный макрос.

С помощью #undef нельзя отменить встроенные макроопределения.