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

Expanding macro globally: is it possible to automate?

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

#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的宏扩展重构工具,但是崩溃了。有没有可以帮助我解决这个问题的工具?这只是数百个这样的宏之一。

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

你可能会编写一个 Eclipse 插件来自动化它,尽管如果手动调用 "Explore Macro Expansion"(我假设这就是你在问题中所指的)崩溃,那么你的插件可能会 运行 陷入同样的​​崩溃。无论哪种方式,我都会建议 filing a bug 关于那次崩溃。

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