从 clang 中的 FunctionDecl 类获取参数信息

Sou*_*jee 5 c++ clang libtooling

如何从 clang 中的 FunctionDecl 类中以字符串形式获取参数信息。我正在尝试,但对这么多继承感到困惑。此外,他们的编译器说 getReturnType() 不是 FunctionDecl 的成员,但 doxygen 文档另有说明。请帮忙。 http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html

using namespace std;
using namespace clang;
using namespace clang::driver;
using namespace clang::tooling;
using namespace llvm;

.......
class ExampleVisitor : public RecursiveASTVisitor<ExampleVisitor> 
{
    ......
    virtual bool VisitFunctionDecl(FunctionDecl *func) 
    {
            numFunctions++;
            string funcName = func->getNameInfo().getName().getAsString();
            string retName = func->getReturnType().getAsString();
            ...
            return true;
    }

}
Run Code Online (Sandbox Code Playgroud)

错误:-

“class clang::FunctionDecl”没有名为“getReturnType”的成员

Mar*_* A. 3

根据您是否需要限定名称或非限定名称,您可以将返回类型和参数名称字符串化,如下所示

std::string retType = F->getReturnType().getAsString();
std::string arg0;
if(F->getNumParams() > 0)
  arg0 = F->parameters()[0]->getQualifiedNameAsString();
Run Code Online (Sandbox Code Playgroud)

查看提供的getAsString()方法。


编辑:在您发表评论后,我发现您没有最新的 Clang 源代码。请在重试之前检查一下。祝你好运!