std::source_location 是 C++20 引入的类型安全运行时类类型,自动捕获调用点的文件名、行号、列号和函数名,支持成员函数访问,常作带默认值的函数参数。
std::source_location 是 C++20 引入的标准库类型,它在调用点(通常是函数入口)自动构造一个包含文件名、行号、列号和函数名的结构化对象。它不是宏,而是一个可传递、可拷贝、可存储的类类型,支持成员函数如 file_name()、line()、column()、function_name()。
典型用法是作为函数默认参数:
void log(const std::string& msg,
const std::source_location& loc = std::source_location::current()) {
std::cerr << "[" << loc.file_name() << ":" << loc.line()
<< "] " << msg << "\n";
}
调用 log("error occurred") 时,编译器自动填入**实际调用处**的位置信息,而非定义处 —— 这对封装日志函数至关重要。
__/__LINE__ 是预处理宏,无类型、无作用域控制__FILE__ 和 __LINE__ 是传统 C 风格的预处理器宏,在预处理阶段被文本替换为字面量字符串和整数。它们不经过类型检查,不能直接参与模板推导或作为类成员;且一旦写在某个函数/宏定义里,展开后固定指向该定义位置,无法反映调用点。
例如:
#define LOG(msg) std::cerr << __FILE__ << ":" << __LINE__ << " " << msg << "\n"
void foo() { LOG("in foo"); } // 输出的是 LOG 宏定义所在行,不是 foo() 中这行
除非手动传参(如 LOG("msg", __FILE__, __LINE__)),否则容易误标位置 —— 尤其在封装层中极易出错。
不必非此即彼。常见稳健做法是:
std::source_location 作默认参数,保证调用溯源准确loc.file_name() 获取字符串进一步加工assert(condition && "msg") + __FILE__/__LINE__(因 assert 属于预处理行为),但生产级日志建议迁移到 source_location基本上就这些 —— 不复杂但容易忽略细节。C++20 的 source_location 让“在哪出的问题”这件事,终于有了标准、干净、靠谱的答案。
# c++
# 区别
# 标准库
# 常量
# 封装
# 成员函数
# Error
# const
# 字符串
# 预处理器
# 无类型
# 接口
# 对象
# 作用域
# column
# 行号
# 的是
# 非此即彼
# 这件事
# 这对
# 自定义
# 再用
# 它在
# 而非
# 写在
相关文章:
如何设置并定期更换建站之星安全管理员密码?
如何快速上传建站程序避免常见错误?
制作网站的公司有哪些,做一个公司网站要多少钱?
北京专业网站制作设计师招聘,北京白云观官方网站?
html制作网站的步骤有哪些,iapp如何添加网页?
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何在阿里云虚拟服务器快速搭建网站?
如何快速完成中国万网建站详细流程?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
建站主机无法访问?如何排查域名与服务器问题
如何选择高效可靠的多用户建站源码资源?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
网站专业制作公司有哪些,做一个公司网站要多少钱?
如何通过免费商城建站系统源码自定义网站主题与功能?
如何在橙子建站中快速调整背景颜色?
建站主机CVM配置优化、SEO策略与性能提升指南
如何登录建站主机?访问步骤全解析
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
建站之星后台密码遗忘?如何快速找回?
建站之星如何助力网站排名飙升?揭秘高效技巧
网站制作知乎推荐,想做自己的网站用什么工具比较好?
如何用wdcp快速搭建高效网站?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何做网站制作流程,*游戏网站怎么搭建?
实例解析angularjs的filter过滤器
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
建站之星伪静态规则如何正确配置?
建站之星官网登录失败?如何快速解决?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
建站上传速度慢?如何优化加速网站加载效率?
C++中引用和指针有什么区别?(代码说明)
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
Swift开发中switch语句值绑定模式
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
,有什么在线背英语单词效率比较高的网站?
建站主机如何安装配置?新手必看操作指南
如何零成本快速生成个人自助网站?
,石家庄四十八中学官网?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
制作门户网站的参考文献在哪,小说网站怎么建立?
建站主机默认首页配置指南:核心功能与访问路径优化
如何打造高效商业网站?建站目的决定转化率
,购物网站怎么盈利呢?
建站主机服务器选型指南与性能优化方案解析
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何在Windows虚拟主机上快速搭建网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
建站之星导航菜单设置与功能模块配置全攻略
*请认真填写需求信息,我们会在24小时内与您取得联系。