如何查看DEBUG条件语句的输出

How to view the output of DEBUG conditional statement?

本文关键字:输出 语句 条件 何查看 DEBUG      更新时间:2023-10-16

我用#ifdef DEBUG条件语句写了一个代码,在代码块中打印cout语句。我的问题是:

  1. 所以这些条件调试只会出现在条件对吗?
  2. 如果是这样,当我调试代码时,我如何查看代码块中的输出?

我不确定代码块,但在visual studio中,您可以选择是否要构建程序的调试或发布版本(或您定义的任何其他版本)。这实际上是将DEBUG标志设置为true。您不需要手动定义变量。在任何情况下,您都可以使用自己的定义。

在调试版本中,#ifdef debug中的任何内容都将被编译,而在发布版本中,这些代码块将被跳过。要从调试中获取信息,可以像这样定义一个宏调试打印。

#define DEBUG_MODE 1 // Or 0 if you dont want to debug
#ifdef DEBUG_MODE
#define Debug( x ) std::cout << x
#else
#define Debug( x ) 
#endif

然后调用Debug(someVariable);如果构建调试版本,您将在控制台中获得输出,否则什么也不会发生。

正如在其他评论/回答中提到的,您可以定义一个宏,如DEBUG(message),仅在调试构建中打印调试消息。但是,我建议您使用NDEBUG而不是DEBUG来这样做。NDEBUG是一个标准化的预定义宏,在发布版本中由编译器自动定义,如果这是您的意图。这样使用:

// #define NDEBUG  ==> not needed, this macro will be predefined by compiler in release build
#ifdef NDEBUG         // release build
# define DEBUG(msg)
#else                 // debug build
# define DEBUG(msg)   std::cout << msg
#endif
int main(void)
{
    DEBUG("this will be printed to console in debug build onlyn");
    return 0;
}