Clang返回参数名称而不是参数

时间:2016-08-01 17:52:30

标签: clang clang++

我想打印函数中传递的参数。但是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";
    }
}

请告诉可能是什么问题。

1 个答案:

答案 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();
        }
    }
}
相关问题