我可以使用emacs或IDE(MS / Mono / sun studio等)重命名结构成员及其在文件中的所有用法(我的意思是,使用 - >或。运算符)吗?例如,我有
struct foo { int a_1, int int b_2; //etc }
我将struct改为这样的东西:
struct foo { struct { int a_1, int b_2; } v; //etc }
现在我的f->a_1
或f.a_1
类型的源代码中有很多f->b_2
或f.b_2
以及struct foo
或struct foo*
需要替换为编译器在v
结构中找到它:f.v->a_1
而不是。{我怎么能这样做?
Regexp是一个丑陋的解决方案(如果其他解决方案是手动执行,我可以做)但不可能,因为它也需要匹配struct的类型。因此,需要执行知道C类型的文本编辑器/ IDE。如果您不知道如何使用emacs,但请使用IDE告诉我。
答案 0 :(得分:1)
您可以使用RTags的Emacs插件执行此操作:
https://github.com/Andersbakken/rtags/
rtags-rename-symbol
(默认绑定: C-x r R )
声明:
我觉得它很好用非常,但是我遇到了宏重命名和重模板c ++代码的问题(这些代码已经在最新版本中得到修复)。
它还可以一次性重命名多个文件中的符号(如果你使用的是一个项目和一个compile_commands.json),那么在测试代码之前隐藏/保存你的更改 - 以防万一。