控制对c++全局作用域的访问

Control access to C++ global scope?

本文关键字:访问 作用域 全局 c++ 控制      更新时间:2023-10-16

我有时不得不将一些成熟的c源代码转换为类。有时会出现的一个问题是某些函数共享全局变量。这通常很难找到。

我只是在想,如果有可能禁止一个类显式地使用全局作用域的符号或类似的东西。什么好主意吗?

编辑:

当然,我可以搜索所有全局变量并将它们转换为类成员,但这可能有点困难。如果源代码有大约1000行,我不能审查所有的代码。我只是想知道,如果编译器可以帮助我找到他们。

您可以将所有全局变量放在namespace范围内(可能大于1)。在此之后,编译器将会为非全局变量报错。去做相应的修改。

Edit:对于新问题,No没有从编译器中挑选出全局变量的功能。此外,查找全局变量很容易,不需要代码审查或重构。这是一项机械工作。一旦找到它,就把它放在namespace作用域中。例如

int g_value;

皈依,

namespace Globals {
  int g_value;
};