首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

看Qt源码中的小技巧

我们需要屏蔽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打印。这一技巧非常巧妙,值得学习。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200527A0RWX800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券