gpt4 book ai didi

c - 如何自动重构 C for 循环

转载 作者:行者123 更新时间:2023-11-30 16:27:27 27 4
gpt4 key购买 nike

我有一个非常大的旧代码库,我正在慢慢更新。

在大部分代码中,都有for循环执行基本的数学例程,我想回调函数来更改它们

for(int i=0;i< NUM_EL; i++)
{
x[i] = a[i] * b[i];
}

vector_multiply(a,b,x,NUM_EL);

vector_multiply 的原型(prototype)在哪里

void vector_multiply(const double *a, const double * b, double *x, int num_el);

是否有任何东西可以扫描您的源代码并将标准数学运算转换为回调例程?

更具体地说,会更改您的代码以自动在代码中进行 blass 回调吗?

我猜我可以使用 libclang 来做到这一点。

最佳答案

我不相信这可以完全自动完成而不可能引入错误。

但是,您可以使用 perl 脚本并手动查看更改。

perl -0777 -pe 's/for\s*\(\s*int\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*0;\s*\1\s*<\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*;\s*\1\s*\+\+\s*\)\s*\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\[\1\]\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\[\1\]\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*)\[\1\]\s*;\s\}/vector_multiply(\4,\5,\3,\2);/igs' test.c

关于c - 如何自动重构 C for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52729963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com