Цитата(neiver @ Jan 9 2012, 22:00)

Вариант с обычным if идеологически правильнее, чем с #ifdef потому, что прежде чем выкинуть недостижимый код, компилятор всё-таки проверит его корректность, в отличии от препроцессора.
Автор темы задавал этот-же вопрос на другом форуме и там так-же возникла конфронтация
#ifdef(DEBUG) VS if(DEBUG). Можете почитать мои доводы там.
Хороший форум - добрый, читал что-то там пару раз но не зарегистрирован, поэтому тут отвечу. Идеология тут ни при чем - для констант имеющих заранее определенное значение всегда рекомендуется использовать средства компилятора - это не потому что нужно проверять что и как и компилить 10 раз в случае чего а потому что у компилятора появляется больше вариантов для оптимизации конечного кода. Здесь речь об отладкке - и собирать я лично начну именно с отладочного варианта если уж написал какой-то отладочный код, поэтому никаких 10-20 раз не будет, но если проект большой как например ядро Linux препроцессор выкинет отладочный код (и вообще весь который не нужен для цели сборки) и ждать каждый раз когда компилятор его проверит не нужно - а прождать в случае 20 млн SLOC можно нехило.
Сообщение отредактировал sasamy - Jan 9 2012, 18:52