基于Clang的函数调用分析
我正在使用clang进行某种源代码到源代码的转换。我想做以下工作: 我在C语言中有一些函数类,它们是基于Clang的函数调用分析,clang,transformation,Clang,Transformation,我正在使用clang进行某种源代码到源代码的转换。我想做以下工作: 我在C语言中有一些函数类,它们是va_arg函数,例如printf()。源文件中可能有许多对printf()的调用。我想解析源代码并找到所有这些对printf()的调用。此外,我想找到传递给printf()的参数类型。所以,如果我有 int a, b, c; printf("%d%d%d", a, b, c); 我想知道对printf的特定调用是printf(char*,int,int,int)类型。我并不特别关心资格赛 有人
va_arg
函数,例如printf()
。源文件中可能有许多对printf()
的调用。我想解析源代码并找到所有这些对printf()
的调用。此外,我想找到传递给printf()
的参数类型。所以,如果我有
int a, b, c;
printf("%d%d%d", a, b, c);
我想知道对printf
的特定调用是printf(char*,int,int,int)
类型。我并不特别关心资格赛
有人能告诉我,我该怎么做?任何类似的例子都是受欢迎的。如果你能告诉我我应该看哪些课程,并简单地告诉我应该遵循的流程,我将非常感激 你应该写一封信。首先要看的是代码,它是一个非常简单的ASTConsumer
查找对printf的所有调用的一种方法是通过查找节点。这些节点有getNumArgs()和getArg(n),可以让您检查参数。您可以对这些表达式调用expr->getType()来获取它们的类型。您应该编写一个ASTConsumer。首先要看的是代码,它是一个非常简单的ASTConsumer 查找对printf的所有调用的一种方法是通过查找节点。这些节点有getNumArgs()和getArg(n),可以让您检查参数。您可以对这些表达式调用expr->getType()来获取它们的类型