Я пытаюсь получить родительский узел для CallExpr в посетителя .Код, который я работаю, выглядит следующим образом:
int dummy()
{
return 0;
}
namespace
{
void a()
{
dummy();
}
int b()
{
return dummy();
}
} // end of unnamed namespace
void c()
{
dummy();
}
Однако в функции VisitCallExpr Я могу получить только родительский узел CallExpr (пустышка) в функции a и b , и если я удалю namespace , я могу получить только родительский узел в функции a .Что я должен сделать, чтобы получить родительский узел для всех вызовов dummy ?
Если я удаляю пространство имен, только dummy () в функции a () имеет родительский узел.При использовании namespce a () и b () будут находиться в одном и том же дочернем узле TranslationUnitDecl, а dummy () в обеих функциях имеет родительские узлы.Но dummy () в функции c () ни в коем случае не имеет родительского узла.Я использую ASTContext :: getParents (), чтобы найти родительский узел dummy ().