在 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")))
匹配函数指针的查询是什么,例如,在以下代码中:
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")))