用于协调 C++ 代码的 clang API 和工具

问题描述

假设我们有一个很大的代码库和一个执行一些阻塞 IO 的函数 string blockRead()。我希望将此函数更改为协程 my_task<string> coroRead() 并使用 clang 自动重构整个代码库以使用 co_await coroRead() 而不是 blockRead()。当然,困难而乏味的部分是遍历调用图以协调所有调用函数。例如

block1.cc

#include "block_io.h"

int f1() {
  auto x = blockRead();
  return stoi(x);
}

block1.h

int f1();

block2.cc

#include "block1.cc"

int f2() {
  return f1() + 1;
}

应该变成这样

coro1.cc

#include "coro_io.h"
#include "coro.h"

my_task<int> f1() {
  auto x = co_await coroRead();
  co_return stoi(x);
}

coro1.h

#include "coro.h"
my_task<int> f1();

coro2.cc

#include "coro1.h"

my_task<int> f2() {
  co_return (co_await f1()) + 1;
}

clang 生态系统有点混乱,所以我希望得到一个方向,哪些 API 可能有助于解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)