反正有没有使用 clang libtooling 切换功能?
Is there anyway to switch the functions using clang libtooling?
已编辑:
我和我的同事对 clang 和 llvm 还很陌生。
我有三个函数..
function 1{}
function 2{}
function 3{}
有没有办法把函数换成
function 3{}
function 2{}
function 1{}
使用 clang libtooling / rewriter 并打印出函数名称以及函数内的参数?
您可以先使用 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;
}
在 main 中,在 ParseAST 之后和写入文件之前,你将做一个 rearrangeFunctionDecls。
已编辑:
我和我的同事对 clang 和 llvm 还很陌生。
我有三个函数..
function 1{}
function 2{}
function 3{}
有没有办法把函数换成
function 3{}
function 2{}
function 1{}
使用 clang libtooling / rewriter 并打印出函数名称以及函数内的参数?
您可以先使用 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;
}
在 main 中,在 ParseAST 之后和写入文件之前,你将做一个 rearrangeFunctionDecls。