問題タブ [libtooling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clang - ソースコードStmtの行番号をclang libtoolingを使用して出力する
こんにちは、clang libtooling を使用しています。.c ファイルを取得して、存在するすべての関数の名前と関数宣言が含まれる行を出力する必要があります。 Stmts。
c++ - CLang LibTooling 処理関数 テンプレート引数
テンプレート引数を異なる方法で処理したいので、コードの場合:
param がテンプレートの特殊化であり、そのパラメーターにアクセスできることを知りたいです。
だから私はASTVisitor
with 関数を書いた
しかし、これらのキャストは両方ともnullptr
常に -template param found
出力を得ることはありません。
私は何を間違っていますか?テンプレートパラメータのチェックを可能にするタイプのキングに t をキャストする他の方法はありますか?
c++ - 関数の LLVM IR を自分のプログラムで利用できるようにするにはどうすればよいですか?
特定のイントロスペクション機能を利用できるようにしたいライブラリに取り組んでいます。私はclangでコンパイルしているので、libtoolingなどにアクセスできるとしましょう。
私が具体的に望んでいるのは、誰かがプログラムの一部として既にコンパイルされた関数の LLVM IR を表示できるようにすることです。コンパイル時に -emit-llvm を使用して IR を取得できることはわかっています。しかし、それはファイルに保存されます。私が望むのは、LLVM IR がプログラム自体に埋め込まれ、プログラム自体から取得できるようにすることです。たとえば、 my_function_object.llvm_ir()
そのようなことは可能ですか?ありがとう!
clang - Clang libtooling: マクロの展開場所を決定する
header.h
クラス定義に展開されるマクロ定義を含むヘッダーと、このマクロをインクルードして使用するソース ファイルtest.cpp
がありますheader.h
。それから私はRecursiveASTVisitor
すべてのを訪問するために使用しCXXRecordDecl
ます。
マクロ (test.cpp 内) の展開である CXXRecordDecl にアクセスし、それをクエリするSourceLocation
と、場所はマクロ定義の場所をdump()
指します。header.h
この CXXRecordDecl のために取得する必要があるのはSourceLocation
、マクロ展開です。私の場合は、test.cpp
.
前もって感謝します。
c++ - クラスに仮想メソッドが含まれている場合、clang がこれらの暗黙的なメソッドを作成するのはなぜですか?
私は、clang の AST に基づくツールに取り組んでいます。clang がこのように動作する理由を知りたいです。
これが私の入力です。次のように定義された非常に単純なクラスがあります。
次に、RecursiveASTVisitor には、次のようなコードがあります。
これは、アクセスしたすべてのクラスで定義されたメソッドのリストを吐き出すだけです。この出力は、期待どおりです。
では、Foo クラスに小さな変更を加えてみましょう。foo() メソッドを仮想化しましょう:
今私の出力が変わります:
私の質問は、仮想メソッドをクラスに追加すると、clang が暗黙の代入演算子とデストラクタを作成するのはなぜですか? --std=c++11 を追加すると、暗黙的な移動代入演算子も作成されます。これは clang の実装の詳細ですか、それとも C++ 標準の一部ですか?