std::experimental:: source_location
From cppreference.net
<
cpp
|
experimental
|
ヘッダーで定義
<experimental/source_location>
|
||
|
struct
source_location
;
|
(ライブラリ基盤 TS v2) | |
source_location
クラスは、ファイル名、行番号、関数名など、ソースコードに関する特定の情報を表します。以前は、呼び出し元のサイトに関するこの情報(ロギング、テスト、またはデバッグの目的で)を取得したい関数は、
__LINE__
や
__FILE__
のような定義済みマクロが呼び出し元のコンテキストで展開されるように、マクロを使用する必要がありました。
source_location
クラスはこれより優れた代替手段を提供します。
目次 |
メンバー関数
生成 |
|
実装定義の値で新しい
source_location
を構築する
(public member function) |
|
|
[static]
|
新しい
source_location
を構築する
(public static member function) |
その他の特殊メンバ関数 |
|
|
(destructor)
(implicitly declared)
|
source_location
を破棄する
(public member function) |
|
operator=
(implicitly declared)
|
暗黙的に宣言されたコピー/ムーブ代入演算子
(public member function) |
フィールドアクセス |
|
|
このオブジェクトが表す行番号を返す
(public member function) |
|
|
このオブジェクトが表す列番号を返す
(public member function) |
|
|
このオブジェクトが表すファイル名を返す
(public member function) |
|
|
このオブジェクトが表す関数名を返す(存在する場合)
(public member function) |
|
例
このコードを実行
#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!