Ответ 1
#undef ABC
#undef FUNC
#undef
"отменяет" предыдущий #define
. Эффект, как если бы у вас никогда не было предыдущего #define
для конкретного идентификатора. Обратите внимание, что #define
не учитывает область видимости, поэтому лучше использовать их только тогда, когда вам нужно.
Также обратите внимание, что не имеет значения, использует ли один макрокоманд "обычный" синтаксис, в то время как другой использует "функциональный" синтаксис. #define ABC
и #define ABC(A)
оба определяют макрос с именем ABC
. Если у вас есть оба, без #undef
одного из них, последний из них "переопределяет" другой. (Некоторые компиляторы могут выдать предупреждение, если это произойдет.)