std::source_location 可获取文件名、行号、列号和函数名。通过默认参数自动捕获调用位置,常用于日志、断言等场景,信息在编译期确定,性能开销极小,取代传统宏实现,代码更安全简洁。
source_location 是 C++20 引入的一个实用工具,定义在 头文件中。它允许程序在运行时或编译期获取当前代码的源码位置信息,比如文件名、行号、函数名等。这个功能特别适用于日志记录、调试断言、错误追踪等场景。
通过 std::source_location,你可以获取以下信息:
这些信息是静态获取的,也就是说,在调用点自动填充,无需手动传参。
最常见的用法是将其作为函数参数的默认值,利用编译器自动推导当前位置:
#include#include #include void log(std::string_view message, std::source_location loc = std::source_location::current()) { std::cout << "文件: " << loc.file_name() << "\n" << "行号: " << loc.line() << "\n" << "函数: " << loc.function_name() << "\n" << "消息: " << message << "\n\n"; } void some_function() { log("发生了一个日志事件"); }
输出类似:
文件: main.cpp你可以用 source_location 增强自定义断言,让错误信息更清晰:
#define ASSERT(expr) \
do { \
if (!(expr)) { \
std::cerr << "断言失败: " #expr "\n" \
<< "文件: " << std::source_location::current().file_name() << "\n" \
<< "行号: " << std::source_location::current().line() << "\
n" \
<< "函数: " << std::source_location::current().function_name() << "\n"; \
std::terminate(); \
} \
} while(0)
这样当断言触发时,能立刻定位到出错位置,极大提升调试效率。
std::source_location::current() 是一个特殊的函数,虽然看起来像普通函数调用,但它返回的是编译期常量。这意味着位置信息是在编译时确定的,性能开销极小,几乎可以忽略。
注意:尽管信息是编译期生成,但对象本身通常在运行时构造,不过现代编译器会高度优化这类操作。
基本上就这些。C++20 的 source_location 提供了一种类型安全、零成本的方式来获取源码位置,取代了过去依赖宏如 __FILE__ 和 __LINE__ 的方式,写法更简洁,语义更清晰。
# 工具
# ai
# c++
# ios
# stream
# 常量
# 对象
# 事件
# column
# 行号
# 更清晰
# 的是
# 是一个
# 发生了
# 是在
# 你可以
# 可以用
# 适用于
# 将其
相关文章:
广东专业制作网站有哪些,广东省能源集团有限公司官网?
css网站制作参考文献有哪些,易聊怎么注册?
javascript中对象的定义、使用以及对象和原型链操作小结
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
实例解析Array和String方法
如何用5美元大硬盘VPS安全高效搭建个人网站?
Bpmn 2.0的XML文件怎么画流程图
如何用PHP工具快速搭建高效网站?
如何通过PHP快速构建高效问答网站功能?
建站之星ASP如何实现CMS高效搭建与安全管理?
如何登录建站主机?访问步骤全解析
,网页ppt怎么弄成自己的ppt?
如何快速搭建FTP站点实现文件共享?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何用搬瓦工VPS快速搭建个人网站?
如何选择网络建站服务器?高效建站必看指南
建站之星如何保障用户数据免受黑客入侵?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何通过宝塔面板实现本地网站访问?
太原网站制作公司有哪些,网约车营运证查询官网?
网站制作价目表怎么做,珍爱网婚介费用多少?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
攀枝花网站建设,攀枝花营业执照网上怎么年审?
建站之家VIP精选网站模板与SEO优化教程整合指南
Python文件管理规范_工程实践说明【指导】
广东企业建站网站优化与SEO营销核心策略指南
香港服务器租用每月最低只需15元?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
建站之星价格显示格式升级,你的预算足够吗?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
建站之星如何快速更换网站模板?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何在景安云服务器上绑定域名并配置虚拟主机?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站上市公司网站建设方案与SEO优化服务定制指南
浅析上传头像示例及其注意事项
济南网站制作的价格,历城一职专官方网站?
如何高效完成独享虚拟主机建站?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何快速搭建响应式可视化网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
音响网站制作视频教程,隆霸音响官方网站?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
黑客如何通过漏洞一步步攻陷网站服务器?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过NAT技术实现内网高效建站?
h5网站制作工具有哪些,h5页面制作工具有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。