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

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

Синтаксис

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

Комментарии

Директива #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 операторов имени макроса в начале файла.

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

См. также

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