Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
匹配函数指针的查询是什么,例如,在以下代码中:
int foo(struct A *a, int b) { return a->x->y(b); }
y是要匹配的函数指针。
y
最后,这是调用函数指针的答案。主要困难是使用查询来检测函数指针的类型。所以我添加了ignoringParens(functionType())遍历匹配器来解决这个问题。一个简单的用法是functionType()行不通的。
ignoringParens(functionType())
functionType()
match callExpr(hasDescendant(memberExpr(hasType(pointerType(pointee(ignoringParens(functionType()))))).bind("member")))