新闻中心
c++怎么获取当前函数名和行号_c++中获取函数调试信息的方法
使用__LINE__、__FILE__和__func__可获取行号、文件路径和函数名,结合__PRETTY_FUNCTION__显示完整函数签名,通过宏封装实现跨平台日志输出。

在C++中获取当前函数名和行号,常用于调试、日志记录或异常追踪。虽然C++标准没有直接提供反射机制来获取函数名,但借助编译器内置宏和预定义标识符,可以轻松实现。
使用__LINE__、__FILE__和__func__
C++标准支持几个预定义的标识符和宏,可以在任何函数中直接使用:
- __LINE__:当前代码行号(整数)
- __FILE__:源文件路径(字符串)
- __func__:当前函数名(静态字符串,非宏,由编译器生成)
示例:
<font face="Courier New"><strong>void</strong> testFunction() {
std::cout << "File: " << __FILE__ << std::endl;
std::cout << "Line: " << __LINE__ << std::endl;
std::cout << "Function: " << __func__ << std::endl;
}</font>输出类似:
File: /path/to/main.cpp Line: 10 Function: testFunction
使用PRETTY_FUNCTION__获取更详细的函数签名
在GCC和Clang中,__PRETTY_FUNCTION__ 提供完整的函数原型,包括返回类型、参数等。
示例:
<font face="Courier New"><strong>template</strong><<strong>typename</strong> T>
<strong>void</strong> process(T value) {
std::cout << __PRETTY_FUNCTION__ << std::en
dl;
}</font>输出可能是:
小云雀
剪映出品的AI视频和图片创作助手
1949
查看详情
void process(T) [with T = int]
比__func__ 更详细,适合模板调试。
跨平台兼容的宏封装
为了方便使用,可以定义一个日志宏:
<font face="Courier New">#define LOG_DEBUG() \
std::cout << "[" << __FILE__ << ":" << __LINE__ \
<< "] " << __func__ << " called.\n"</font>调用方式:
<font face="Courier New">LOG_DEBUG(); // 自动打印文件、行号和函数名</font>
在发布版本中可通过条件编译关闭:
<font face="Courier New">#ifdef DEBUG
# define LOG_DEBUG() ...
#else
# define LOG_DEBUG() do {} while(0)
#endif</font>基本上就这些。利用__func__、__LINE__和编译器扩展,就能高效获取调试信息,不复杂但容易忽略细节。不同编译器对__PRETTY_FUNCTION__的支持略有差异,建议结合文档使用。
以上就是c++++怎么获取当前函数名和行号_c++中获取函数调试信息的方法的详细内容,更多请关注其它相关文章!
# c++
# 行号
# 游戏开发
# 边缘
# 几个
# 就能
# 相关文章
# 中文网
# 解决问题
# 可通过
# ai
# 河西区百度推广招聘网站
# 中山谷歌seo厂家
# 济南网站优化指导
# 河北关键词优化排名全包
# 淘宝怎样搭建网站店铺推广
# 眉山地网站推广
# 关键词排名诚信火24星
# 东光网站建设配置
# 江西营销seo推广招聘
# 正规网站推广怎么做
# 查看详情
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
EMS快递官网app_中国邮政速递物流手机客户端
QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道
2026春节假期票务安排_2026春节放假购票指南
利用5118提升短视频内容效果_5118短视频关键词优化方法
yandex入口引擎手机版 yandex安卓版下载入口
微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网
微信商城在哪里打开【步骤】
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
必由学在线入口 必由学网页版快速登录入口
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
J*aScript中向JSON对象添加新属性的正确姿势
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
Excel Power Pivot如何处理XML数据源 构建高级数据模型
Go语言中JSON数据解析与字段访问教程
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
Mac怎么锁定备忘录_Mac备忘录加密设置教程
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
离线运行Go语言之旅:本地部署与GOPATH配置指南
Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程
mc.js官网登录入口 mc.js官方登录入口最新版
大象笔记网页版入口 印象笔记网页版登录入口
J*aScript:在map操作中高效处理空数组
J*a 递归快速排序中静态变量的状态管理与陷阱
单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分
MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏
ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版
蛙漫2台版漫画地址 Manwa2正版网页版链接
Django表单验证失败时保留用户输入数据的最佳实践
如何在J*a中实现统一对象行为接口_项目大型化时的接口规范化
Android Studio计算器C键功能异常排查与修复教程
Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁
c++如何使用Meson构建系统_c++比CMake更快的构建工具
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址
网易大神账号申诉需要多久_网易大神账号申诉流程说明
顺丰国际快递查询 国际件官方查询入口
J*a里如何使用forEach遍历Map_Map遍历方法说明
c++中为什么推荐使用using替代typedef_c++现代化类型别名
网易大神怎么保存别人动态的图片_网易大神动态图片保存方法
AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南
Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】


2025-11-20
浏览次数:次
返回列表
dl;
}</font>