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


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

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

Макросы можно не определить из командной строки с помощью /U параметра, а затем имена макросов, которые будут неопределенными. Результат выдачи этой команды эквивалентен последовательности #undef операторов имени макроса в начале файла.

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

См. также

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