我想打印函数中传递的参数。但是clang返回函数定义中使用的参数名称。这是我的代码:
if (CallExpr *call = dyn_cast<CallExpr>(st))
{
LangOptions LangOpts;
LangOpts.CPlusPlus = true;
PrintingPolicy Policy(LangOpts);
for(int i=0, j=call->getNumArgs(); i<j; i++)
{
std::string TypeS;
raw_string_ostream raw(TypeS);
call->getArg(i)->printPretty(raw, 0, Policy);
errs() << raw.str() << "\n";
}
}
请告诉可能是什么问题。
答案 0 :(得分:2)
在论证方面,有很多可能性。但我认为你正在处理最简单的情况,例如:
int iArgument = 123;
char cArgument = 'c';
foo(iArgument, cArgument);
获取参数'info
需要多次演员for (unsigned i = 0; i < call->getNumArgs(); ++i) {
if (auto cast = dyn_cast<ImplicitCastExpr>(call->getArg(i))) {
if (auto arg = dyn_cast<DeclRefExpr>(cast->getSubExpr())) {
arg->getNameInfo().getName().dump();
}
}
}