Цитата(_Артём_ @ Sep 5 2012, 02:54)

Не, неправильно -так Achtung! никогда не случится:
Это решает проблему из первого сообщения:
Цитата
из того модуля банально не видно дефайн DEBUG_MODE
если напутано в инклюдах, то это будет обнаружено.
А вообще лучше определения таких символов, управляющих отладкой, включать не в текст программы, а определять в командной строке компилятора (в опциях используемой IDE или в make-файле). Это позволяет скомпилировать Debug и Release варианты без изменений в тексте программы, просто выбирая нужный вариант.
На NDEBUG, кстати, ещё завязаны ассерты (см. assert.h), поэтому есть смысл начинать плясать от него, примерно как в моём примере было сделано.
update: впрочем, тогда эта проблема просто не возникнет, поскольку наличие/отсутствие NDEBUG всегда однозначно определяет Debug или Release компилируется.
Russia est omnis divisa in partes octo.