如何查看DEBUG条件语句的输出
How to view the output of DEBUG conditional statement?
我用#ifdef DEBUG
条件语句写了一个代码,在代码块中打印cout
语句。我的问题是:
- 所以这些条件调试只会出现在条件对吗?
- 如果是这样,当我调试代码时,我如何查看代码块中的输出?
我不确定代码块,但在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;
}
相关文章:
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- if/else 语句输出由于加号或减号而未显示正确的消息
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- 为什么当 while 循环中的 if 条件变为 false 时,我的函数不输出最后一条语句?
- C++:更改 IF 语句中的输出文件
- c++:if 语句无法正常运行,并继续执行无效输出
- C++如果使用 lambda 表达式的语句返回 true,但输出来自 false,为什么
- 输出错误命令的条件语句
- 为什么我得到错误的输出 - If & Else 语句
- C# 读取完全锁定的文本文件或读取 if 语句外部的输出
- 如果/else语句未显示/可变分配问题的输出;初学者程序员
- 从类模块检索信息以在 switch 语句中输出时出现问题
- 切换语句在 C++ 中的输出不清楚
- Cpp 切换语句不会输出条件集
- Switch语句不显示除默认语句之外的任何类型的输出
- 删除"超出矢量误差范围"的打印语句后输出不同的根本原因
- cout 输出乱码消息行,而不是实际用户的 cout 语句
- 最后一行欧普特两个组合输出问题?如果其他语句
- 添加 cout 语句会更正输出
- c++中while循环执行中的打印输出语句