Я работаю над 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
функция должна идти внутри условия if, как b [0], b [1],abc [1] упоминается в основной функции.
Но управление не входит только внутрь, и я также не могу его отладить.
Пожалуйста, дайте мне знать ответ на этот вопрос.