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
# 行号
# 的是
# 非此即彼
# 这件事
# 这对
# 自定义
# 再用
# 它在
# 而非
# 写在
相关文章:
如何配置FTP站点权限与安全设置?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
Python多线程使用规范_线程安全解析【教程】
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
广州美橙建站如何快速搭建多端合一网站?
如何用PHP工具快速搭建高效网站?
建站主机选购指南:核心配置优化与品牌推荐方案
Swift中循环语句中的转移语句 break 和 continue
教程网站设计制作软件,怎么创建自己的一个网站?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
济南网站制作的价格,历城一职专官方网站?
定制建站流程步骤详解:一站式方案设计与开发指南
,购物网站怎么盈利呢?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何在万网ECS上快速搭建专属网站?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
,南京靠谱的征婚网站?
建站主机选择指南:服务器配置与SEO优化实战技巧
如何选择适配移动端的WAP自助建站平台?
制作网站的软件免费下载,免费制作app哪个平台好?
太原网站制作公司有哪些,网约车营运证查询官网?
如何自定义建站之星网站的导航菜单样式?
大同网页,大同瑞慈医院官网?
php json中文编码为null的解决办法
建站主机服务器选购指南:轻量应用与VPS配置解析
,sp开头的版面叫什么?
定制建站方案优化指南:企业官网开发与建站费用解析
专业公司网站制作公司,用什么语言做企业网站比较好?
定制建站策划方案_专业建站与网站建设方案一站式指南
如何彻底删除建站之星生成的Banner?
如何在腾讯云服务器上快速搭建个人网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
自助网站制作软件,个人如何自助建网站?
建站之星如何开启自定义404页面避免用户流失?
如何快速搭建高效可靠的建站解决方案?
家庭服务器如何搭建个人网站?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
建站之星客服服务时间及联系方式如何?
南平网站制作公司,2025年南平市事业单位报名时间?
如何通过商城免费建站系统源码自定义网站主题?
建站之星安装路径如何正确选择及配置?
如何通过虚拟机搭建网站?详细步骤解析
如何在IIS中配置站点IP、端口及主机头?
建站三合一如何选?哪家性价比更高?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
广州商城建站系统开发成本与周期如何控制?
*请认真填写需求信息,我们会在24小时内与您取得联系。