Директива #undef используется для снятия определения макроса. Она имеет следующий вид:
#undef имя_макроса
Например:
#define LEN 100 #define WIDTH 100
char array[LEN][WIDTH];
#undef LEN #undef WIDTH
/* в данный момент как LEN, так и WIDTH не определены */
Как LEN, так и WIDTH определены, пока не встретится соответствующий #undef.
Основное назначение #undef состоит в локализации имен макросов только в тех частях, где они необходимы.