Цитата(romez777 @ Jul 22 2005, 13:01)
Цитата(makc @ Jul 22 2005, 12:50)
Мне кажется, что все дело в
Код
#undef DEBUG
Которое удаляет макроопределение из области видимости. Нужно иметь в виду, что оно никак не связано с if ..., т.к. if не обрабатывается в данном случае препроцессором.
то есть #undef равно как и #define будут обработаны препроцессором независимо от if-then ?
Именно. Это директивы
препроцессора, который обрабатывает исходный текст программы до ее компиляции. А оператор
if и ему подобные - это ключевые слова, которые обрабатываются
компилятором, т.е. препроцессор их попросту трактует как текст.
Более того, это означает, что нижеприведенный пример будет замечательно работать:
Код
#define begin {
#define end }
int main()
begin
return 0;
end