【问题标题】:How to find declaration of a variable using Clang?如何使用 Clang 查找变量的声明?
【发布时间】:2014-12-25 12:41:12
【问题描述】:

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

【问题讨论】:

标签: c++ clang


【解决方案1】:

类似

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

【讨论】:

  • 我刚刚尝试过,编译器抱怨“错误:dynamic_cast from 'const clang::Expr *' to 'clang::DeclRefExpr *' casts away qualifiers”。我认为这是因为 DeclRefExpr * 不是常数!
猜你喜欢
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多