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の実装
1
A
答えて
1
残念ながら、現時点ではそこに適切にのみ、コンパイラによってsource_locationを実装する方法はありませんので、あなたはそのデータを格納する構造に位置情報を供給するために__FILE__
、__LINE__
と__FUNCTION__
のようなプリプロセッサとマクロを使用する必要がありますそれら(あなたがsource_locationと呼ぶもの)。
私は本当にあなたの痛みを分かち合います。
私は最近、スローされる例外に位置情報といくつかの情報を追加する小さなライブラリを開発しています。そこでは、基本的にちょうど前述のものから得た値をフィードするMY_THROW(Exception(args))
のような醜いマクロ例外をスローする関数にマクロを追加します。ひどく見えているように、それはこれまでの唯一の働く選択肢のようです。
関連する問題
- 1. Visual Studio 2015 Update 3のco_awaitはstd :: experimental :: optionalで動作しますか?
- 2. Visual Studio 2012とResharperのgoto実装
- 3. PostgreSQL hstore、json C#Visual Studioの実装
- 4. Visual Studio 2010でCURLを実装する
- 5. のstd :: Visual Studioでinitializer_list曖昧
- 6. std :: experimental :: filesystem :: recursive_directory_iteratorスキップフォルダとそのサブフォルダ
- 7. std :: tr1 with visual studio 2017
- 8. std :: cout with Visual Studio 2015
- 9. Visual Studioのstd :: beginとend :: endイテレータ
- 10. std :: promiseのVC++実装
- 11. Visual Studio - 既定でインターフェイスの実装に移動
- 12. Visual StudioでのWindowsワークフロー基盤を実装する方法2012
- 13. Visual Studio 2008で動作するstd :: unique_ptrを含むC++標準ライブラリの実装はありますか?
- 14. no-op std :: ostreamの実装
- 15. libC++ std :: condition_variable_anyの実装
- 16. std :: forward実装の違い
- 17. SIMD実装のstd :: nth_element
- 18. Visual Studio 2015でデバッグ用の偽装URL
- 19. Visual Studioのコード分析のDisposeの実装の警告
- 20. C++でのstd :: forward_list swap()の実装
- 21. Androidでstd :: experimental :: optionalを有効にする方法
- 22. visual studio 2008 sp1 std :: string :: c_str()エラー
- 23. std :: is_nothrow_copy_constructibleの実装は何ですか?
- 24. Visual StudioでCodeLensを正しく実装する方法コード
- 25. Visual Studioでのstd :: vectorサイズの初期化
- 26. std :: auto_ptr Visual Studio 6.0でのコンパイルの問題
- 27. リファレンスでパラメータとしてstd :: experimental :: optionalを使用する
- 28. boostオプションとstd :: experimentalのオプション割り当ての違い
- 29. のVisual StudioでのVisual Studio(タスクランナーエクスプローラ)で
- 30. std :: experimental :: futureでstd :: asyncを使用する方法はありますか?
VS __FILE__' __LINE__'' __FUNCTION__'で定義されたマクロがあります – drescherjm
'source_location'を実装するのに十分ではありません。 '__builtin_FILE()'は、元の場所ではなく、呼び出し元のファイル名を返します。これはコンパイラによって実装されていて、それらのマクロのようなプリプロセッサではありません。 – Mike