РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
40 of 815 menu

Директива #undef

Директива #undef отменяет ранее определённый макрос, созданный с помощью директивы #define. В качестве параметра директива принимает имя макроса, который нужно отменить. После этого имя макроса перестаёт заменяться препроцессором на своё значение, и его можно снова определить заново.

Директива #undef не выдаёт ошибку, если указанный макрос не был определён ранее. Это позволяет безопасно отменять макросы, не проверяя их существование.

Синтаксис

#undef MACRO_NAME

Пример

Давайте определим макрос VALUE, используем его, затем отменим с помощью #undef и попробуем использовать снова:

#include <iostream> using namespace std; #define VALUE 42 int main() { cout << VALUE << endl; #undef VALUE // VALUE больше не является макросом int VALUE = 10; cout << VALUE << endl; return 0; }

Результат выполнения кода:

42 10

Пример

Давайте отменим макрос и определим его заново с другим значением:

#include <iostream> using namespace std; #define VALUE 100 int main() { cout << VALUE << endl; #undef VALUE #define VALUE 200 cout << VALUE << endl; return 0; }

Результат выполнения кода:

100 200

Пример

Давайте проверим, что после отмены макроса его имя можно использовать как обычный идентификатор:

#include <iostream> using namespace std; #define MAX 100 int main() { cout << MAX << endl; #undef MAX int MAX = 5; cout << MAX << endl; return 0; }

Результат выполнения кода:

100 5

Смотрите также

  • директива #define,
    которая определяет макрос
  • директива #ifdef,
    которая проверяет наличие макроса
  • директива #ifndef,
    которая проверяет отсутствие макроса
  • директива #include,
    которая подключает заголовочные файлы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить