Пытаюсь перед определением макро, если макро с таким именем уже есть, сохранить старое значение, потом назначить новое значение, а после использования макро вернуть старое значение этому имени.
Например:
#define NUM 8
#ifdef NUM
# define pre_NUM NUM
# undef NUM
#endif
#define NUM 4
//Использую NUM
#undef NUM
#if defined pre_NUM
# define NUM pre_NUM
# undef pre_NUM
#endif