現在、LLVMを使ってパスを書いていますが、変数/パラメータ/引数名に関していくつか質問があります。LLVMで名前を抽出するIR
が、私はこの構造体を持っていると言う:
struct Kid { char name[30]; int age; char hobby[30]; };
私は、モジュールのパスを実行し、モジュールにStructType
対応Kid
年代を見つけましたよ。私はKid
のメンバーの名前を使用したいが、私はそれらにアクセスする方法を知らない。私はelement_iterator
を使用しようとしましたが、メンバーはType
として返されます。構造体のデータメンバーの名前にアクセスするにはどうすればよいですか?
EDIT:これは、私が現在扱っている 'char'型のメンバーが 'name'か 'hobby'かどうかを判断できるようにするためです。場合。次のようなものがあります:
case "name" do something;
case "hobby" do something else;
同じ種類のメンバーと区別する別の方法はありますか?
- 私には機能があります
foo(int a, int b)
と言います。 関数のパラメータの名前を取得するにはどうすればよいですか?foo
の呼び出しでarg_iterator
を実行して 引数を見つけようとしましたが、引数にgetName()
を呼び出すと、空のStringRef
が返されます。
助けていただければ幸いです。
よろしくお願いいたします。私は何をしたいかについてより具体的に質問を編集します。 2番目の質問はどうですか? – baronzo1
私は2番目の質問にも答えました。すべての「名前」はソースレベルの機能なので、IRには含まれていません。これは、理由のためである。そうしなければ、C/C++の組合やビットフィールドを扱うことができなくなります。したがって、ソースレベルのものを使用する必要がある場合は、フロントエンド内のすべてを実行する必要があります。または、他の方法で必要な情報を復元します。デバッグ情報。 –
ええ、私はそのコメントを編集したいと思っていました。 ありがとうございました! – baronzo1