【项目小技巧】【C++】 Debug 日志输出 调用者的函数名,所在文件名和行号

news2024/11/6 10:49:33

文章目录

  • 一、先编写好输出日志的函数
  • 二、使用宏定义新的函数
  • 三、效果展示

一、先编写好输出日志的函数

/**
 * 输出 Debug 信息
 * @param [message] [debug 信息]
 * @param [fileName] [调用该函数的文件名字]
 * @param [line] [在文件的第几行]
 **/
void DebugLog(std::string message, std::string fileName, int line);

二、使用宏定义新的函数

#define DEBUG_LOG(message) DebugLog(message, __FILE__, __LINE__)

其中, __FILE__ 是系统定义的常量,表示当前环境的文件名;__LINE__ 表示当前文件行号;而函数名则是 __FUNCTION__ 【示例中没有使用】

这样在调用 DEBUG_LOG() 函数时,只需要填入调试日志信息,宏会替换,自动填充调用者当前的 文件名行号

三、效果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

行业应用 | 克劳斯玛菲磁力换模项目案例分享

包装行业的发展趋势表明,绿色包装和技术创新是未来的重要方向。双色注塑机的应用正好符合这一趋势,因为它能够减少材料使用,提高生产效率,同时生产出更具吸引力和功能性的包装产品。随着技术的进步和市场需求的增长,双…

音视频入门基础:FLV专题(22)——FFmpeg源码中,获取FLV文件音频信息的实现(中)

本文接着《音视频入门基础:FLV专题(21)——FFmpeg源码中,获取FLV文件音频信息的实现(上)》,继续讲解FFmpeg获取FLV文件的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四、音…

Hudi Upsert原理

1. 前言 如果要深入了解Apache Hudi技术的应用或是性能调优,那么明白源码中的原理对我们会有很大的帮助。Upsert是Apache Hudi的核心功能之一,主要完成增量数据在HDFS/对象存储上的修改,并可以支持事务。而在Hive中修改数据需要重新分区或重…

Proteus中单片机IO口外接LED输出低电平时,引脚却一直保持高电平的问题(已解决)

文章目录 前言解决方法后记 前言 一个排阻接八个 LED,方便又省事,但出现了P1端口输出低电平后,仿真引脚却一直显示红色保持高电平不变,用电压表测量显示 2V 左右。 这是仿真的问题,在用开发板时是不会遇到的&#xff…

医院信息化与智能化系统(15)

医院信息化与智能化系统(15) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应…

系统集成项目管理工程师考试时间

系统集成项目管理基础知识考试信息 题量:共 75 道题。考试时间:该科目考试时间为上午 8:30 - 12:30(或下午 14:30 - 18:30,但通常为上午)。基础知识科目最短作答时长 90…

数据结构 ——— 向上调整建堆和向下调整建堆的区别

目录 前言 向下调整算法(默认小堆) 利用向下调整算法对数组建堆 向上调整建堆和向下调整建堆的区别​编辑 向下调整建堆的时间复杂度: 向上调整建堆的时间复杂度: 结论 前言 在上一章讲解到了利用向上调整算法对数组进行…

Handler、Looper、message进阶知识

Android Handler、Looper、Message的进阶知识 在Android开发中,Handler、Looper和Message机制是多线程通信的核心。为了深入理解并优化它们的使用,尤其是在高并发和UI性能优化中,可以利用一些高级特性。 1. Handler的高阶知识 Handler在基本…

【设计模式系列】迭代器模式(七)

一、什么是迭代器模式 迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供一种方法来顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。迭代器模式将集合的遍历过程封装在一个独立的迭代器对象中,这样…

C++基础三(构造函数,形参默认值,函数重载,单例模式,析构函数,内联函数,拷贝构造函数)

C有六个默认函数,分别是: 1、默认构造函数; 2、默认拷贝构造函数; 3、默认析构函数; 4、赋值运算符; 5、取址运算符; 6、取址运算符const; 构造函数 构造函数(初始化类成员变量): 1、属于类的成员函数之一 …

【C语言学习笔记】

C语言发展史: 1960 原型A语言->ALGOL语言 1963 CPL语言1967 BCPL1970 B语言1973 C语言 C语言特点: 基础性语言语法简洁 紧凑 方便 灵活(得益于指针)运算符 数据结构丰富结构化 模块化编程移植性好 执行效率…

智慧城市的守护者——智能井盖监测终端

城市化进程的加速推进使得基础设施建设成为提升城市品质的关键环节。然而,在这一进程中,市政公用设施中的井盖与地下线缆的安全问题却日益凸显。由于缺乏有效的实时监控与管理体系,给犯罪分子留下了可趁之机,频繁发生的井盖被盗及…

C语言 | Leetcode C语言题解之第513题找树左下角的值

题目: 题解: #define MAX_NODE_SIZE 10000int findBottomLeftValue(struct TreeNode* root){int ret;struct TreeNode** queue (struct TreeNode **)malloc(sizeof(struct TreeNode) * MAX_NODE_SIZE);int head 0;int tail 0;queue[tail] root;whil…

HarmonyOS应用开发者基础认证——初级闯关习题参考答案大全

相关文章 HarmonyOS应用开发者中级认证——中级闯关习题参考答案大全 HarmonyOS应用开发者高级认证——高级闯关习题参考答案大全 文章目录 HarmonyOS第一课 HarmonyOS介绍判断题单选题多选题 HarmonyOS第一课 DevEco Studio的使用判断题单选题多选题 HarmonyOS第一课 ArkTS语法…

SpringBoot 集成 Mybatis-Plus,LambdaQueryWrapper 使用方法

🏝️ 博主介绍 大家好,我是 一个搬砖的农民工,很高兴认识大家 😊 ~ 👨‍🎓 个人介绍:本人是一名后端Java开发工程师,坐标北京 ~ 🎉 感谢关注 📖 一起学习 &am…

Word文档丢失抢救方法:15 个 Word 文档恢复工具

MS Word 文档恢复的重要性 对于严重依赖 Microsoft Word 创建和编辑文档的个人和企业来说,MS Word 文档恢复是一个至关重要的方面。 文件损坏、系统崩溃和其他意外事件可能会导致 Word 文档中存储的重要数据丢失。 及时恢复这些文档有助于节省时间、精力和资源。 本…

python实战项目51:selenium结合requests获取某众点评评论

python实战项目51:selenium结合requests获取某众点评评论 一、selenium获取cookies二、利用requests发送请求三、注意事项四、完整代码一、selenium获取cookies 首先,初始化selenium的webdriver,然后使用webdriver打开某众点评主页,之后手动扫码登录,利用selenium的get_c…

ETLCloud怎么样?深度解析其在数据管理中的表现

在BI或数据大屏等数据分析工具中,经常需要从多个业务系统中提取原始数据,然后对数据进行清洗、处理,以获取高质量、有效且干净的数据以供后续的BI进行数据统计和分析使用,从高质量的实现企业数据的价值变现。 然而,在…

《花少6》豆瓣评分3.9,“锅”不该周雨彤一个人背

《花儿与少年 第六季》以豆瓣评分3.9成为了整个系列IP有史以来口碑最差的一季节目。 播出过半的《花少6》终于在万众期待下开分了,豆瓣首次开分为4.8,实际上已经是“花少”史上最低评分,紧接着短短几天持续下滑至3.9分,让原本就不…

WPF+MVVM案例实战(十七)- 自定义字体图标按钮的封装与实现(上)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、案例效果1、按钮分类2、BC类按钮实现1、文件创建2、字体图标资源3、自定义依赖属性4、按钮特效样式实现3、案例实现1、案例效果 1、按钮分类 在WPF开发中,最常见的就是按钮的使用,这里我们总…