如何为循环自动重构C

时间:2018-10-09 22:02:47

标签: c refactoring automated-refactoring libclang

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

在代码的大部分内容中,有for loops个预先执行的基本数学例程,我想将它们回调到一个函数上,即进行更改

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

vector_multiply(a,b,x,NUM_EL);

vector_multiply的原型在哪里

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

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

更具体地讲,是否会更改代码以自动在代码中进行简单的回调?

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

1 个答案:

答案 0 :(得分:0)

我不认为这不可能完全自动化,而不会引入错误。

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

SCOPE_EXIT(p, delete p);