Which preprocessor define should be used to specify debug sections of code?
Use #ifdef _DEBUG
or #ifndef NDEBUG
or is there a better way to do it, e.g. #define MY_DEBUG
?
I think _DEBUG
is Visual Studio specific, is NDEBUG standard?
cdebugging
Which preprocessor define should be used to specify debug sections of code?
Use #ifdef _DEBUG
or #ifndef NDEBUG
or is there a better way to do it, e.g. #define MY_DEBUG
?
I think _DEBUG
is Visual Studio specific, is NDEBUG standard?
Best Answer
Visual Studio defines
_DEBUG
when you specify the/MTd
or/MDd
option,NDEBUG
disables standard-C assertions. Use them when appropriate, ie_DEBUG
if you want your debugging code to be consistent with the MS CRT debugging techniques andNDEBUG
if you want to be consistent withassert()
.If you define your own debugging macros (and you don't hack the compiler or C runtime), avoid starting names with an underscore, as these are reserved.