全球扩张宏:是否有可能实现自动化?

时间:2017-04-20 00:55:54

标签: c++ macros eclipse-cdt

我正在研究一个非常糟糕的代码库。为了给你一个想法,这里是他们如何做循环:

#define loop(v,m) for(int v = 0; v < int(m); ++v)

这无处不在。它变得更糟:

#define loopi(m) loop(i, m)
#define loopj(m) loop(j, m)
#define loopk(m) loop(k, m)
#define loopl(m) loop(l, m)
#define looprev(v, m) for (int v = int(m); --v >= 0;)
#define loopirev(m) looprev(i, m)
#define loopjrev(m) looprev(j, m)
#define loopkrev(m) looprev(k, m)
#define looplrev(m) looprev(l, m)

我已经尝试过Eclipse的宏扩展重构工具,但它崩溃了。有没有可以帮助我的工具?这只是像这样的数百个宏中的一个。

1 个答案:

答案 0 :(得分:1)

我不知道有任何使用Eclipse CDT自动执行此操作的内置方法。

你可能会编写一个Eclipse插件来自动化它,虽然如果手动调用“探索宏扩展”(我假设你在你的问题中提到的那个)崩溃,那么你的插件可能会遇到同样的崩溃。无论如何,我都建议filing a bug关于那次崩溃。

您还可以查看其他工具,例如clang-expand