如何更新项目中的所有C/C++标识符名称

jac*_*hab 5 c c++ regex refactoring

经常遇到建议不要在C/C++标识符中使用前导和双下划线后,我决定一劳永逸地修复所有源代码.我现在需要做的是转换_IdentifierIdentifier_.

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

小智 13

虽然我是经常指出带有前导下划线的名字可能会被保留的人之一,但我强烈建议您不要这样做,除非您遇到名称引起的问题.进行这种全局更改将使您的版本控制系统不如通过引起各种虚假差异而变得有用.此外,还有可能创建重复的名称.

此外,还有许多下划线前缀名称完全有效.跟着感觉走立刻__LINE____FILE__等,并可以通过您的具体实施提供了非标准功能的全部名称.过滤掉这些名称将远非微不足道(我会说几乎不可能),当然简单的Perl或sed脚本是不够的.

因此,我鼓励您在对代码进行其他更改时逐个文件地更改名称.更改编程标准以避免使用前导下划线名称并根据标准编写新代码.

  • 但是,如果您有问题跟踪,请确实提出关于命名的(低优先级)错误,并且在更新文件时,请执行两个签入:一个用于修复名称,另一个用于进行其他更改.像"进行一行更改,还修改了200行来修复命名"这样的签名实际上是无用的差异. (4认同)

Edo*_* A. 7

如果您使用Visual Studio,则可以使用Visual Assist X等重构插件来帮助您完成此操作.


Mar*_*utz 7

Perl应该可以完成这项工作,但是当它变得棘手时会有Coccinelle.