我想将参数传递给函数。例如,如果我接到电话
printf("%d%d", i, j);
输出应该是
%d%d
i
j
我可以使用 RecursiveASTVisitor 中的 VisitCallExpr() 进行函数调用。还能够获取参数数量和参数类型。但我不知道如何获得论据。
bool MyRecursiveASTVisitor::VisitCallExpr (clang::CallExpr *E)
{
for(int i=0, j=E->getNumArgs(); i<j; i++)
{
llvm::errs() << "argType: " << E->getArg(i)->getType().getAsString() << "\n";
}
return true;
}
Output:
arg类型: char *
arg类型:int
arg类型:int
请帮助我获得论据。
你的回答非常有帮助,马丁斯。我不知道 printPretty(...) 函数。现在,我可以打印参数了。下面是我打印参数的代码。
bool MyRecursiveASTVisitor::VisitCallExpr (clang::CallExpr *E)
{
clang::LangOptions LangOpts;
LangOpts.CPlusPlus = true;
clang::PrintingPolicy Policy(LangOpts);
for(int i=0, j=E->getNumArgs(); i<j; i++)
{
std::string TypeS;
llvm::raw_string_ostream s(TypeS);
E->getArg(i)->printPretty(s, 0, Policy);
llvm::errs() << "arg: " << s.str() << "\n";
}
return true;
}
输出如下所示:
"%d%d"
i
j
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)