std::source_location在C++20中用于自动捕获文件名、行号、函数名等源码信息,通过current()获取调用点位置,支持日志和断言中无需手动传入__FILE__、__LINE__,提升调试效率。

在C++20中,std::source_location 是一个轻量级的类,用于在编译时捕获源代码的上下文信息,比如文件名、行号、函数名等。它非常适合用在日志记录、断言、调试输出等场景,避免手动传入 __FILE__、__LINE__ 等宏。
基本特性与成员函数
std::source_location 提供了以下只读访问接口:
- file_name():返回当前源文件路径(const char*)
- line():返回当前行号(unsigned int)
- column():返回列号(通常实现为1或未完全支持)
- function_name():返回所在函数名(const char*),通常是经过修饰的名称(mangled)
这个类型是隐式构造的,通常通过 std::source_location::current() 获取当前位置信息,且该调用不会产生运行时开销(在优化后基本被常量替代)。
如何使用 source_location 记录日志
你可以将 std::source_location 作为默认参数传入日志函数,自动捕获调用点信息:
立即学习“C++免费学习笔记(深入)”;
标签: c++20 app 工具 ai c++ ios stream
还木有评论哦,快来抢沙发吧~