std::experimental::source_location

来自cppreference.com
定义于头文件 <experimental/source_location>
struct source_location;
(库基础 TS v2)

source_location 类表示关于源码的某些信息,例如文件名、行号和函数名。之前,欲获得关于调用点的此信息(为了记录、测试或调试的目的)的函数必须用宏将如 __LINE____FILE__ 的预定义宏展开于调用方的环境。 source_location 类提供一个更好的替用品。

成员函数

创建
创建拥有实现定义值的新 source_location
(公开成员函数)
[静态]
创建新的 source_location
(公开静态成员函数)
其他特殊成员函数
(析构函数)
(隐式声明)
析构 source_location
(公开成员函数)
operator=
(隐式声明)
隐式声明的复制/移动赋值运算符
(公开成员函数)
域访问
返回此对象所表示的行号
(公开成员函数)
返回此对象所表示的列号
(公开成员函数)
返回此对象所表示的文件名
(公开成员函数)
返回此对象所表示的函数名,若它存在
(公开成员函数)

示例

#include <iostream>
#include <string_view>
#include <experimental/source_location>
 
void log(const std::string_view& message, const std::experimental::source_location& location = std::experimental::source_location::current())
{
    std::cout << "info:"
              << location.file_name() << ":"
              << location.line() << " "
              << message << '\n';
}
 
int main()
{
    log("Hello world!");
}

可能的输出:

info:main.cpp:15 Hello world!