C++确定是否使用调试符号进行编译而不定义预处理器符号

Ste*_* Lu 27 c c++ debugging gcc

我一直在使用这样的东西:

int main(int argc, char *argv[])
{

#ifdef DEBUG
    printf("RUNNING DEBUG BUILD");
#else
    printf("Running... this is a release build.");
#endif
...
Run Code Online (Sandbox Code Playgroud)

但是,这需要我使用-DDEBUG进行编译以进行调试构建.GCC是否为我提供了一些方法来确定何时使用调试符号(-g标志)进行编译,例如定义我自己可以检查的预处理器宏?

Joe*_*lav 24

答案是否定的.通常这些宏(DEBUG,NDEBUG,_DEBUG)由IDE/make系统设置,具体取决于您处于活动状态的配置(调试/发布).我认为这些答案可能有所帮助:

用于调试打印的C#define宏

-DNDEBUG通常来自哪里?

_DEBUG与NDEBUG