"Удалить" макрос означает отменить его определение. Это производится с помощью директивы '#undef', за которой следует имя макроса. Как и определение, удаление макросов появляется в определенном месте исходного файла и вступает в силу с этого места.
Например,
#define FOO 4
x = FOO;
#undef FOO
x = FOO;
заменяется на
x = 4;
x = FOO;
В этом примере значение 'FOO' должно быть лучше переменной или функцией, чем макросом, для получения после подстановки правильного С кода. Директива '#undef' используется в такой же форме и для отмены макроопределений с аргументами или без них. Применение этой директивы к неопределенному макросу не дает никакого эффекта.