私は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 条件内に入る必要があります。
しかし、制御は内部だけではなく、デバッグにも失敗しています。
この問題の答えを教えてください。