编辑:
我和我的同事对clang和llvm都很陌生。
我有三个功能..
function 1{}
function 2{}
function 3{}
无论如何都要将功能交换到
function 3{}
function 2{}
function 1{}
使用clang libtooling / rewriter打印出函数名和函数内的参数?
答案 0 :(得分:0)
您可以先使用ASTConsumer解析AST。您一次获得一个函数的AST,您可能希望将它存储在某个地方,然后您可以将它们添加到clang的REWRITTER API中,最后将缓冲区转储回文件。
This是编辑一些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之后和写入文件之前,您将执行rearrangeFunctionDecls。