c++ - 用于协同 C++ 代码的 clang API 和工具
问题描述
假设我们有一个很大的代码库和一个string blockRead()
执行一些阻塞 IO 的函数。我希望将此函数更改为协程my_task<string> coroRead()
并使用 clang 自动重构整个代码库以co_await coroRead()
使用blockRead()
. 当然,困难而乏味的部分是遍历调用图来协调所有调用函数。例如
块1.cc
#include "block_io.h"
int f1() {
auto x = blockRead();
return stoi(x);
}
块1.h
int f1();
块2.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 可能对解决这个问题有用。
解决方案
推荐阅读
- laravel - Laravel 5.3 在自定义验证规则中设置第二个属性名称
- dependencies - Pycharm,了解项目依赖、解释器和结构
- javascript - 如何在 Tampermonkey 中捕获状态 503
- assembly - 从 68k 的 txt 文件中读取
- arrays - 在 Swift 中将看起来像数组的变量转换为数据
- amazon-web-services - Windows 10 - vagrant plugin install vagrant-aws - “libxml2” 包不可用。(运行时错误)
- android - Facebook登录给出异常“SERVER_ERROR:[code] 1675030 [message]:执行查询时出错。[extra]:null”
- google-sheets - Excel(Googel Sheets)公式仅在当前行之前的范围内查找值
- javascript - React 和 NextJS:模块解析失败:意外的令牌
- html - HTML/CSS 响应式导航栏和对齐