2009-07-22 38 views
5

在经常遇到建议不要在C/C++标识符中使用前导和下划线的情况下,我决定彻底修复所有源代码。我现在需要做的是将_Identifier转换为Identifier_如何更新项目中的所有C/C++标识符名称

我应该使用一个专门的工具来完成这项正则表达式任务吗?在后一种情况下,匹配C/C++标识符的模式是什么?

回答

13

虽然我是那些经常指出带有下划线的名称可能会被保留的人之一,但我强烈建议您不要这样做,除非遇到由名称引起的问题。进行这种全局变更会使你的版本控制系统比其他方式造成的各种虚假差异更有用。此外,还有可能会创建重复的名称。

此外,还有许多下划线前缀名称可以完全有效。我们立即认为__LINE____FILE__等,以及您的具体实施可能提供的所有非标准功能的名称。过滤掉这些名字将是微不足道的(我会说接近不可能的),当然一个简单的Perl或sed脚本是不够的。

因此,我鼓励您在对代码进行其他更改时逐个更改文件名称。改变你的编程标准,以避免领先的下划线名称,并按照标准编写新代码。

+0

我非常同意这一点。下划线的位置并不重要。 – 2009-07-22 11:46:27

0

如果您的回归测试是稳定的,那么如果您只是编写一个快速perl脚本来替换所有内容并运行测试套件,则应该没有问题。如果你没有稳定的回归测试......那么你可以做perl脚本替换,然后重建代码。如果编译工作,那么一切都很好的机会是相当不错的。换句话说,尝试快速解决方案,并且只有在不起作用的情况下才使用专用工具。

7

如果您使用Visual Studio,则有重构插件(如Visual Assist X)可以帮助您解决这个问题。

7

Perl应该完成这项工作,但有Coccinelle时,它会变得棘手。

1

Netbeans可以使用Refactor-> Rename菜单命令为整个项目执行此操作。但它一次只适用于一个标识符,所以您需要重申您需要更改的每个标识符。