Namespaces
Variants

std::experimental:: source_location

From cppreference.net
struct source_location ;
(库基础 TS v2)

source_location 类用于表示源代码的特定信息,例如文件名、行号和函数名。以往需要获取调用处此类信息(用于日志记录、测试或调试目的)的函数必须使用宏,以便像 __LINE__ __FILE__ 这样的预定义宏能在调用方上下文中展开。 source_location 类提供了更优的替代方案。

目录

成员函数

创建
构造具有实现定义值的 source_location
(公开成员函数)
[static]
构造新的 source_location
(公开静态成员函数)
其他特殊成员函数
(destructor)
(implicitly declared)
析构 source_location
(公开成员函数)
operator=
(implicitly declared)
隐式声明的复制/移动赋值运算符
(公开成员函数)
字段访问
返回此对象表示的行号
(公开成员函数)
返回此对象表示的列号
(公开成员函数)
返回此对象表示的文件名
(公开成员函数)
返回此对象表示的函数名称(如果存在)
(公开成员函数)

示例

#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!