0

私はclang libtoolingに取り組んでいます.割り当て操作の左側が必要でした.

そのため、以前VisitBinaryOperator(BinaryOperator *B)は左側を取得していましたが、それについていくつかの調査を行い、次の方法で実装しました


bool VisitBinaryOperator(BinaryOperator *B)
{
  if(B->isAssignmentOp())
{
Expr *E = B->getLHS();
  if(const clang::DeclRefExpr *lhs =  dyn_cast<clang::DeclRefExpr>(E))
  {
    cout<< "Count 1\n";
  }
}
    return true;
}


これは私のサンプルプログラムです

#define abc ab
int ab[5];
int b[10];
int main()
{
b[0] = 0;
b[1] = b[0];
abc[1] = 0;
}

このプログラムVisitBinaryOperator関数では、b[0]、b[1]、abc[1] がメイン関数で参照されるため、if 条件内に入る必要があります。

しかし、制御は内部だけではなく、デバッグにも失敗しています。

この問題の答えを教えてください。

4

1 に答える 1