在 Clang-Query 中匹配函数指针

Matching Function Pointers in Clang-Query

匹配函数指针的查询是什么,例如,在以下代码中:

int foo(struct A *a, int b)
{
    return a->x->y(b);
}

y是要匹配的函数指针。

最后,这是调用函数指针的答案。主要困难是使用查询来检测函数指针的类型。所以我添加了 ignoringParens(functionType()) 遍历匹配器来解决问题。 functionType() 的简单用法将不起作用。

match callExpr(hasDescendant(memberExpr(hasType(pointerType(pointee(ignoringParens(functionType()))))).bind("member")))