1. Целесообразно использовать заглавные буквы для определения идентификаторов. Данное соглашение помогает любому человеку, читающему программу. Бросив на него один взгляд можно узнать, что он имеет дело с макросом.
2. Все #define лучше помещать в начале файла или вообще в отдельный заголовочный файл.
2.7.4.Директива #undef
Директива #undef ограничивает область действия директивы #define.
Директива имеет следующий формат:
#undef идентификатор,
где идентификатор – это идентификатор, определённый ранее в директиве define.
Пример: #undef ESCAPE
Если в дальнейшем тексте программы появится вызов ESCAPE (g), он будет рассматриваться как обращение к функции, а не как символичный идентификатор.
Директива #undef используется:
Для изменения условия в директиве #ifdef
Для исключения дублирования макроимён.
Последний случай может иметь место при включении файла с помощью директивы
#include. Включаемый файл может содержать макроопределение при такой ситуации возможно дублирование имён. Препроцессор будет руководствоваться первым встретившимся макроопределением.