在经常遇到在C/C++标识符中不使用前导和双下划线的建议之后,我决定一劳永逸地修复我们所有的源代码。我现在需要做的是将_Identifier转换为Identifier_。
我应该使用专门的工具来完成这个任务吗?正则表达式可以完成这个任务吗?在后一种情况下,匹配C/C++标识符的模式是什么?
发布于 2009-07-22 11:37:53
虽然我是经常指出带有前导下划线的名称可能会被保留的人之一,但我强烈建议您不要这样做,除非您遇到由名称引起的问题。进行这种全局更改将使您的版本控制系统变得不那么有用,因为它会导致各种虚假的差异。此外,还存在创建重复名称的可能性。
此外,还有许多带下划线的前缀名称是完全有效的。人们马上就会想到__LINE__和__FILE__等,以及您的特定实现可能提供的所有非标准函数的名称。过滤掉这些名称绝非易事(我认为几乎是不可能的),一个简单的Perl或sed脚本肯定是不够的。
因此,我建议您在对代码进行其他更改时,逐个文件地更改名称。更改您的编程标准以避免前导下划线名称,并根据这些标准编写新代码。
发布于 2009-07-22 11:40:48
如果你使用Visual Studio,有像Visual Assist X这样的重构插件可以帮助你做到这一点。
发布于 2009-07-22 11:40:53
Perl应该可以完成这项工作,但是当它变得棘手时,可以使用Coccinelle。
https://stackoverflow.com/questions/1164650
复制相似问题