C++ determine if compiling with debug symbols without defining a preprocessor symbol

55,370

Answer is no. Usually these macros (DEBUG, NDEBUG, _DEBUG) are set by the IDE/make system depending on which configuration (debug/release) you have active. I think these answers can be of help:

C #define macro for debug printing

Where does the -DNDEBUG normally come from?

_DEBUG vs NDEBUG

Share:
55,370
Steven Lu
Author by

Steven Lu

Play a multitouch HTML5 Tetris clone -- http://htmltetris.com (Interesting note about this site. It used to be my site, then Tetris Co. sent me a cease and desist, then I forgot about it, and now it’s back: someone brought it back and put MY code back on the site.) A huge fan of tmux and vim.

Updated on January 03, 2020

Comments

  • Steven Lu
    Steven Lu over 4 years

    I have been using something like this:

    int main(int argc, char *argv[])
    {
    
    #ifdef DEBUG
        printf("RUNNING DEBUG BUILD");
    #else
        printf("Running... this is a release build.");
    #endif
    ...
    

    However this requires me to compile with -DDEBUG for the debug build. Does GCC give me some way for me to determine when I am compiling with debug symbols (-g flag) such as defining its own preprocessor macro that I can check for?