c++ - 如何使用 Clang 查找变量声明?

标签 c++ clang

我正在尝试使用 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();

关于c++ - 如何使用 Clang 查找变量声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636640/

相关文章:

c++ - 为什么 clang 不允许派生类调用 protected 基函数?

c++ - 错误 : "undefined reference to" while compiling c++

c++ - OpenGL imgui slider 范围

c++ - 为什么 Malloc() 关心边界对齐?

c++ - clang 和 gcc 中是否有 Visual C++ __declspec (属性声明属性)的替代方案?

c++ - 在 constexpr 中使用 strcmp 的编译器差异

c++ - gcc的模棱两可的模板实例化错误

c - 在 OSX 上使用 clang 时,什么控制自动添加的命令行选项?

c++ - 事件队列和互斥锁

c++ - 我可以使用错误的签名调用使用 dlsym() 导入的函数,为什么?