我正在尝试使用Clang分析一些c ++代码。对于以下代码,我能够从AST检索Expr* x
作为f-> bar(x)
的参数。现在,我想找到x
的声明以获得它的初始值,但我不确定我该怎么做。我还查看了http://clang.llvm.org/doxygen/classclang_1_1Expr.html中的Expr
文档,但我找不到任何有用的内容。
struct foo {
int bar(int x) { return x; }
};
int main(){
foo *f;
int x = 0, y = 0;
int y = f->bar(x);
return 0;
}
答案 0 :(得分:1)
像
这样的东西dynamic_cast<const VarDecl*>(dynamic_cast<const DeclRefExpr*>(x)->getDecl())->getInit();