c++ - 使用 AST visitor clang 获取函数声明类型

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

我已经使用 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)

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

最佳答案

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

关于c++ - 使用 AST visitor clang 获取函数声明类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37913253/

相关文章:

c++ - C++ 中的 Utf-8 : quick & dirty tricks

c++ - 为什么在将字符串类型转换为 DWORD 时在运行时得到不同的值?

c++ - QWidget 改造

c++ - std::atomic 不受 clang 支持?

c++ - 有没有一种方法可以基于当前类中的可用重载来进行 SFINAE?

c++ - 帮助提升精神 AST

c++ - 指针函数的深拷贝

compiler-construction - 生成 C/C++ 代码时表达式的关联性和优先级?

c# - 符号表存储 AST(声明)节点还是 "Symbols"不同的对象/类?

c++ - C+ +'s "inline"- 对 GCC 和 Clang/LLVM 的提示有多强?