gpt4 book ai didi

c++ - 更改全局变量名称

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:52 25 4
gpt4 key购买 nike

我正在处理多年前编写的庞大代码库。我们正在尝试实现多线程,我负责清理全局变量(唉!)

我的策略是将所有全局变量移动到一个类中,然后各个线程将使用该类的实例,并且将通过类实例和 -> 运算符访问全局变量。

首先,我通过查找 BD 组对象名称,使用 nm 编译了一个全局变量列表。该列表不完整,如果是静态变量,我没有得到文件和行号信息。

第二阶段更加困惑,我必须用 classinstance->global_name 模式替换代码库中的所有全局变量。为此,我正在使用 cscope Change text string。问题是,对于某些全局变量,它们的名称也在函数内部本地使用,因此 cscope 也正在替换它们。

还有其他办法吗?任何策略,或帮助请!

最佳答案

根据我的经验,只是一些建议:

  • 使用 eclipse:C++ 索引器非常好,在处理大型项目时,我发现跟踪变量非常有用。 shift+ctrl+g(我忘记了如何从菜单访问它!)让你搜索所有引用,ctrl+alt+h(打开调用层次结构)调用者-被调用者树...

  • 使用 eclipse:它有很好的重构工具,能够重命名变量而不触及同名不同范围的变量。 (如果涉及模板,它经常失败。我觉得它很好,比 visual studio 2008 对应的更好)。

  • 使用 eclipse:我知道,开始使用它需要一些时间,但是在您使用它之后,它会非常强大。它可以轻松处理现有的基于 makefile 的项目(文件 -> 新建 -> 项目 -> 具有现有代码的 makefile 项目)。

  • 我会考虑不使用类成员,而是使用访问器:它们中的一些可能会在线程之间共享,并且需要一些锁定才能正确使用。所以我更喜欢:classinstance->get_global_name()

最后一点,我不知道在命令行中使用 eclipse 索引器是否对您的任务有帮助。您可以通过谷歌搜索找到一些示例。

这个问题/答案可以给你更多提示:any C/C++ refactoring tool based on libclang? (even simplest "toy example" ) .特别是我确实引用了“...C++ 是一种需要转换的语言”

关于c++ - 更改全局变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com