当前位置: 首页 > news >正文

Qt中自定义qDebug打印信息的宏(文件名,行数,函数名,日期,时间等前缀)并取消打印

使用qDebug()打印信息时,默认打印"<<"符号后面的信息。

通过自定义宏,可以额外打印文件名,行数,函数,日期、时间等前缀,方便快速定位调式信息的位置。

同时,可以定义宏取消打印输出。

代码如下:

#include <QDebug>        //注意,头文件一定要添加
#define XLOG_EN
#ifdef  XLOG_EN#define xLog qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << __DATE__ << __TIME__<< "]"
#else#define xLog    QT_NO_QDEBUG_MACRO()
#endifint main(int argc, char *argv[])
{xLog << "Hello World!";return 1;
}

程序运行,将会打印如下内容:

[ ../main.cpp : 7 : main  Oct 16 2024 15:47:17 ] Hello World!

__func__:当前的函数名;//同QT_MESSAGELOG_FUNC或Q_FUNC_INFO或__FUNCTION__
__DATE__:当前的编译日期;
__TIME__:当前编译时间;
__FILE__:当前源文件路径及文件名;//同QT_MESSAGELOG_FILE
__LINE__:当前源代码行号;//同QT_MESSAGELOG_LINE

注意:__DATE__,__TIME__打印的是编译的时间,不是程序运行到打印时的时间,我们可以简单使用Qt自带的QDateTime实现,如下:


#include <QDateTime>    //要添加的头文件
#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")<< "]"

程序运行输出信息如下:

[ ../main.cpp : 7 : main  "2024-10-16 16:10:20:398"] Hello World!

如果屏蔽定义:

//#define XLOG_EN

则调试的打印信息就不会输出了!

当然,打印前缀可以使用其它固定的字符串。

http://www.lryc.cn/news/466043.html

相关文章:

  • 【基于docker的深度学习训练环境】关键步骤记录
  • 管理、情商、格局-冯唐讲资质通鉴-笔记
  • 摇人摇人, JD内推岗位(社招+校招)
  • 振弦式传感器在高边坡监测中发挥哪些优势?
  • 计算机网络基础进阶
  • 什么是“钻石继承问题”
  • iOS 回到主线程刷新UI
  • Spring Data 技术详解与最佳实践
  • ubuntu下安装图片编辑工具shutter
  • 代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II
  • TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码
  • Java | Leetcode Java题解之第493题翻转对
  • uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)
  • 腾讯PAG 动画库Android版本的一个问题与排查记录
  • 计算机的算术运算之浮点数
  • Sqlite3 操作笔记
  • mysqlRouter读写分离
  • 【修订中】ffmpeg 知识点
  • Rust初踩坑
  • element-ui 的el-calendar日历组件样式修改
  • LinuxDebian系统安装nginx
  • Redis 数据类型Streams
  • 基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会
  • 【AUTOSAR标准文档】AotuSar结构横向分层详解(RTE、BSW)
  • 新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报
  • 1. 路由定义
  • 我们可以用微服务创建状态机吗?
  • 邦芒贴士:职场新人需远离的7种坏习惯
  • 面向医院的统一支付平台产品经验分享
  • http作业