在使用visual studio调试代码的时候我们经常想多输出一些调试信息方便自己定位问题,但是调试完成之后,程序运行的时候这些调试信息又成为了累赘。有没有什么办法既能在debug的时候收集信息,又能在release的时候优雅的输出呢
一般最容易想到的就是自己定义一个DEBUG
宏来控制输出
#define DEBUG 0
...cpp
if(DEBUG){
fout << "输出调试信息" << endl;
}
但是,这需要我们修改代码,总归是不太方便的
那么有没有一种更为优雅的方式来解决这个问题呢?
那答案必须是有的。
vs在release模式下会定义一个宏NDEBUG
,通过判断这个宏,我们就可以得到是release模式还是debug模式了,具体如下:
#ifndef NDEBUG
#define LOG(expression) (void(::std::cout<<(expression)<<::std::endl))
#else
#define LOG(expression) (void(0))
#endif
这样在你要输出的地方使用LOG("输出调试信息")
替换掉cout
就好了
在vs中使用debug模式才会有输出,换成release之后就是干净清爽无残留
致谢
感谢殷TO提供的思路