微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决用于协调 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 举报,一经查实,本站将立刻删除。