2017-06-26 10 views
1

std::experimental::source_locationの合理的なバージョンは、__builtin_FILE(),__builtin_LINE()などとgccで実装できます。Visual Studio 2017にも同様の組み込み関数がありますか?または、Visual Studio 2017でstd::experimental::source_locationを実装する方法はありますか?Visual Studioでのstd :: experimental :: source_locationの実装

+0

VS __FILE__' __LINE__'' __FUNCTION__'で定義されたマクロがあります – drescherjm

+2

'source_location'を実装するのに十分ではありません。 '__builtin_FILE()'は、元の場所ではなく、呼び出し元のファイル名を返します。これはコンパイラによって実装されていて、それらのマクロのようなプリプロセッサではありません。 – Mike

答えて

1

残念ながら、現時点ではそこに適切にのみ、コンパイラによってsource_locationを実装する方法はありませんので、あなたはそのデータを格納する構造に位置情報を供給するために__FILE____LINE____FUNCTION__のようなプリプロセッサとマクロを使用する必要がありますそれら(あなたがsource_locationと呼ぶもの)。

私は本当にあなたの痛みを分かち合います。

私は最近、スローされる例外に位置情報といくつかの情報を追加する小さなライブラリを開発しています。そこでは、基本的にちょうど前述のものから得た値をフィードするMY_THROW(Exception(args))のような醜いマクロ例外をスローする関数にマクロを追加します。ひどく見えているように、それはこれまでの唯一の働く選択肢のようです。

関連する問題