无论如何可以使用 clang libtool 切换功能

Is there anyway to switch the functions using clang libtooling?

本文关键字:功能 libtool clang 可以使 无论如何      更新时间:2023-10-16

已编辑:

我和我的同事对 clang 和 llvm 很陌生。

我有三个功能..

function 1{}
function 2{}
function 3{}

无论如何可以将功能交换到

function 3{}
function 2{}
function 1{}

使用clang libtooling/重写器并打印出函数名称和函数内的参数?

您可以先使用 ASTConsumer 解析 AST。你一次得到一个函数的 AST,你可能想把它全局存储在某个地方,然后你可以将它们添加到 clang 的 REWRITTER API 中,最后将缓冲区转储回文件。

这是编辑某些 AST 节点并写回文件的示例。在您的情况下,您不会编辑 AST,而只需重新排列缓冲区推送调用以重新排列函数。在 VisitFunctionDecl 中:

bool VisitFunctionDecl(FunctionDecl *f) {
    // Only function definitions (with bodies), not declarations.
    if (f->hasBody()) {
         //store in a global array/vector
    }
    return true;
}

在 ParseAST 之后和写入文件之前,你将执行一个 rerangeFunctionDecls。