繁体   English   中英

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

[英]How to view the output of DEBUG conditional statement?

我已经使用#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 only\n");
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM