Можно ли определить или отменить определение макросов во время выполнения.
Нет.Макросы являются механизмом препроцессора и полностью разрешаются даже до запуска компилятора.
Их цель - изменить исходный код, который видит компилятор, чтобы они даже не существовали во время выполнения (не говоря уже о разрешении изменения).