問題タブ [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.
c++ - clang で DeclRefExpr への dyn_cast 式ポインタに失敗する
私はclang libtoolingに取り組んでいます.割り当て操作の左側が必要でした.
そのため、以前VisitBinaryOperator(BinaryOperator *B)
は左側を取得していましたが、それについていくつかの調査を行い、次の方法で実装しました
これは私のサンプルプログラムです
このプログラムVisitBinaryOperator
関数では、b[0]、b[1]、abc[1] がメイン関数で参照されるため、if 条件内に入る必要があります。
しかし、制御は内部だけではなく、デバッグにも失敗しています。
この問題の答えを教えてください。
c++ - Clang LibTooling でデストラクタの呼び出しに関する情報を取得するには?
C++ では、コンパイラは delete キーワード/スコープの終了などの場所にデストラクタへの呼び出しを暗黙的に挿入する必要があります。C++ では、デストラクタへの呼び出しはコンパイル時に修正する必要があります (呼び出し先は実行時に vtables で決定される場合があります)。(上記でよろしいですか?)
しかし、Clang LibTooling を使用している間の Clang AST のダンプには、AST 内のデストラクタへのそのような暗黙的な呼び出しはありません。比較のために、スキャンされたソース コードに存在しない場合でも、AST に暗黙的に生成されたデフォルトのコンストラクターとデストラクター ノードがあります。
delete キーワードの場合、AST に CXXDeleteExpr ノードがありますが、デストラクタの CXXDestructorDecl は含まれず、削除するオブジェクトのタイプのみが含まれます。
デストラクタへの他のタイプの呼び出しの場合、AST にはノードがまったくありません。
次に、Clang LibTooling で、デストラクタが呼び出される場所に関する情報を取得する方法を教えてください。