我们需要屏蔽qDebug的打印可以在pro文件中定义DEFINES+=QT_NO_DEBUG_OUTPUT,即可屏蔽其输出。本文将介绍QT_NO_DEBUG_OUTPUT宏的实现和使用到的一个小技巧。
源码
Qt 5.12.1源码中QT_NO_DEBUG_OUTPUT宏实现:
#define QT_NO_QDEBUG_MACRO while (false) QMessageLogger().noDebug
#if defined(QT_NO_DEBUG_OUTPUT)# undef qDebug# define qDebug QT_NO_QDEBUG_MACRO#endif
上面看起来代码有点多,我们再看看Qt4版本下QT_NO_DEBUG_OUTPUT宏的实现:
#ifdef QT_NO_DEBUG_OUTPUT# define qDebug while(false) qDebug#endif
效果
当我们定义了QT_NO_DEBUG_OUTPUT宏,qDebug就会被替换为:
while(false) qDebug
例子
假设有以下代码:
qDebug()
那么定义了QT_NO_DEBUG_OUTPUT宏后语句将会被替换为:
while(false) qDebug()
上述操作将永远执行不了qDebug函数,等于禁用了qDebug打印。这一技巧非常巧妙,值得学习。
领取专属 10元无门槛券
私享最新 技术干货