Nicolas Weeger wrote: > > It was very intentional that I left in this #define NDEBUG: > > Well, time to do some magic to have make --debug and make --nodebug? :) > More seriously, assert are good to have. Generally speaking, I think assert statements should normally not be disabled at all, particularly not for release builds: if an assert statement actually should fail, the program contains a very serious logic error. Therefore it is not sensible to continue (and probably crash shortly afterwards without printing a sensible error message). OTOH, if continuation is possible or even sensible, it should not be an assert statement but an if statement which then calls LOG(LOG_ERROR,...) or LOG(LOG_WARNING,...). > If you want to put the define back, then please put it between #ifndef > WIN32 / #endif :) I don't think this is a "WIN32" feature. Therefore I'm very reluctant to add yet another #ifdef WIN32 block. > (NDEBUG is defined in Windows during Release build, so redefinition > warning) I fail to see why the compiler should emit a warning at all: the Ansi C standard explicitly allows macro redefinition if (and only if) the two definitions are identical (ignoring white space differences). Therefore I suspect that the WIN32 build system does not define the macro NDEBUG as the empty string.