14

このブログ投稿このドキュメントページ、およびこの例を読みましたが、C++以外の言語でLLVMのIRBuilderを使用して基本的な例外をスローする方法をまだ理解していません。

私の理解から、私はしなければなりません:

  • llvm::Valueスローされた値を含むを作成します。
  • 「関数」を呼び出して、スローされた値を渡します。この関数は戻りません。

この例では、C ++例外をスローするためにシステム巻き戻し関数(_Unwind_RaiseException)を使用していますが、代わりに独自のレイズ関数を使用する方法がよくわかりません(オブジェクトポインターをスローするだけでよいため)。私は何が欠けていますか?

4

2 に答える 2

3

簡単に言うと、_Unwind_RaiseExceptionこれはC++固有の関数ではありません。これはlibunwindライブラリからのものであり、あらゆるタイプの例外をスローできます。

詳細については、これらのブログ投稿をご覧ください。

于 2013-07-17T09:13:01.950 に答える
0

既存のC++例外処理インフラストラクチャを使用したくないため、その一部を言語に合わせて複製する必要があります。

コンパイラーrt (またはlibstdc ++ではかなり複雑なもの)でCアンワインダーの実装を使用し、最初にlibstdc++でアンワインダーを呼び出すことができます。

于 2013-02-21T16:25:14.443 に答える