如何使用Clang查找变量的声明

How to find declaration of a variable using Clang?

本文关键字:声明 变量 查找 何使用 Clang      更新时间:2023-10-16

我正在尝试使用Clang分析一些c++代码。对于下面的代码,我能够从AST中检索Expr* x作为f-> bar(x)的参数。现在,我想找到x的声明,以获得它的初始值,但我不确定如何做到这一点。我还查看了此处的Expr文档http://clang.llvm.org/doxygen/classclang_1_1Expr.html但我找不到任何有用的东西。

struct foo {
  int bar(int x) { return x; }
};
int main(){
  foo *f;
  int x = 0, y = 0;
  int y = f->bar(x); 
  return 0;
}

类似的东西

dynamic_cast<const VarDecl*>(dynamic_cast<const DeclRefExpr*>(x)->getDecl())->getInit();