std::experimental::source_location

出自cppreference.com
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!