可以使用Clang AST打印带有名称的QualType函数指针吗?

时间:2017-08-28 21:50:48

标签: c++ clang function-pointers clang++ llvm-clang

是否有任何简单可靠的方法(a.k.a.而非正则表达式)将函数指针声明的QualType作为字符串但附加了名称?我试图利用QualType::getAsString(const PrintingPolicy &Policy),但遗憾的是,该配置没有选项。

e.g。

int (*)(void) ----> int (*whatever_name_here)(void)

1 个答案:

答案 0 :(得分:0)

您可以创建VarDecl并进行打印。

假设ctx是您的ASTContext,而type是您的QualType,可以执行以下操作:

// Create identifier.
IdentifierInfo id = ctx.Idents.get("whatever_name_here");
// Create variable declaration.
VarDecl *vd = VarDecl::Create(ctx, ctx.getTranslationUnitDecl(), 
    SourceLocation(), SourceLocation(), &id, type, nullptr, StorageClass:SC_None);
// Print it.
vd->print(/* put your llvm::raw_stream here */, ctx.getPrintingPolicy());