命名空间
变体
操作

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 <experimental/source_location>
#include <iostream>
#include <string_view>
 
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!