我已经用#ifdef DEBUG
条件语句编写代码来在代码块中打印cout
语句。我的问题是:如何查看DEBUG条件语句的输出?
- 所以这些条件调试只会出现在条件正确吗?
- 如果是的话当我调试代码时如何查看代码块中的输出?
我已经用#ifdef DEBUG
条件语句编写代码来在代码块中打印cout
语句。我的问题是:如何查看DEBUG条件语句的输出?
我不确定码块,但在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;
}
语句在控制台上以正常模式和调试模式打印。 –
如果您使用预定义宏DEBUG定义的代码,代码将在您的编译程序中。正如你然后使用普通的'std :: cout'输出,输出将与其他输出到'std :: cout'。 –
试过没有解决。我必须在编译器中设置这个标志吗?我在网上看到几个关于使用-DDEBUG –
的在线提示。这就是通常在从命令行构建时定义调试宏的方法。在IDE中,通常会有一些项目构建设置,您可以在其中设置预处理器宏。查找[在一些文档中](http://wiki.codeblocks.org/index.php/User_documentation)。 –