我编写了一个带有#ifdef DEBUG
条件语句的代码,用于在代码块中打印cout
语句。我的问题是:
答案 0 :(得分:0)
我不确定代码块,但在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);如果您构建调试版本,则在控制台中输出,否则不会发生任何事情。
答案 1 :(得分:0)
如其他评论/答案中所述,您可以定义一个宏,例如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;
}