【问题标题】:Get function declaration type with AST visitor clang使用 AST 访问者 clang 获取函数声明类型
【发布时间】:2016-10-21 03:53:18
【问题描述】:

我已经使用 Clang 实现了一个 AST 访问者。 通过这段代码,我可以正确检索函数调用名称。

virtual bool VisitFunctionDecl(FunctionDecl *func)

{

    numFunctions++;

    string funcName = func->getNameInfo().getName().getAsString();

string funcType = func->getType().getAsString();

APIs << funcType << endl;

    APIs << "\n" << funcName <<": ";

    return true;

}

我还想提取函数声明类型。例如 int my_func(int a, int b){..} 我想提取int类型。它的实现方式返回给我除名称之外的整个函数声明。上面 funcType 中的一段代码会返回 int (int a, int b)

我该如何解决这个问题? 谢谢!

【问题讨论】:

    标签: c++ clang abstract-syntax-tree llvm-clang libclang


    【解决方案1】:

    听起来您正在尝试查找 return 类型,而不是函数的声明类型。为此使用getReturnType()

    【讨论】:

    • 我正在尝试使用 getReturnType() 虽然在文档中我可以看到此方法存在于类 FunctionDecl 类中,但编译器给了我这个错误:'class clang::FunctionDecl' has no member named 'getReturnType'
    • 你是对的!虽然由于我使用的是 llvm/clang 3.4,但 getReturnType() 不存在,但 getResultType() 存在。它的功能相同。
    猜你喜欢
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多