我试图在 Visitor 中获取 CallExpr 的节点的父级。 我正在使用的代码如下,
int dummy()
{
return 0;
}
namespace
{
void a()
{
dummy();
}
int b()
{
return dummy();
}
} // end of unnamed namespace
void c()
{
dummy();
}
但是,在功能 VisitCallExpr 中,我只能在功能 a 中获得 CallExpr (虚拟)的父节点。和 b ,如果删除命名空间,则只能在函数 a 中获得父节点。我应该怎么做才能得到 dummy 的所有调用的父节点?
如果我删除命名空间,则只有函数a()中的dummy()具有父节点。 使用namespce,a()和b()将位于TranslationUnitDecl的同一子节点中,并且两个函数中的dummy()都有父节点。但是函数c()中的dummy()都没有父节点。我使用ASTContext :: getParents()查找dummy()的父节点。