Директива #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
операторов имени макроса в начале файла.
Завершение блока, относящегося только к системам Майкрософт