vis*_*was 2 c++ data-structures
我有一个c ++的大程序,它有太多的函数和全局变量.现在,我想删除那些全局变量,我想只使用局部变量而不是全局变量.任何人都可以建议我这样做的最好方法.谢谢!
它在C++中的大约4000行程序.在这些不同的类中有10个类和60个函数,30个全局变量.全局变量用于不同类的函数之间.
And*_*rsK 13
我通常首先将全局变量放在命名空间中
namespace global
{
int var;
...
}
Run Code Online (Sandbox Code Playgroud)
这将导致您在使用'var'的地方出现错误,然后我只是将引用逐个替换为命名空间变体.一旦所有全局变量引用都在命名空间中,就更容易看到哪些变量是本地变量,哪些变量是全局变量
if ( global::var == 1 ) ...
Run Code Online (Sandbox Code Playgroud)
现在通过搜索global::var获得一个使用它的变量列表,然后你需要逐个查看用法以查看变量是否在几个模块中使用,在这些情况下你可能需要将其作为一个传递在其他情况下,函数参数声明它是一个局部变量.
这是一个繁琐的方法,但消除全球变量总是值得做的.
小智 0
我建议一个解决方案,例如从全局范围中删除它们的声明并将它们放入赞赏的函数中。
示例:
int hello; // global
// remove it
Run Code Online (Sandbox Code Playgroud)
现在,将其放入函数中:
void func()
{
int hello; // local
//...
Run Code Online (Sandbox Code Playgroud)
我们有两种情况:
如果其他函数需要知道 的值
hello,则让它将其hello作为参数:
void func2(const int &helloVar)
{
// ...
Run Code Online (Sandbox Code Playgroud)
如果全局变量仅由单个函数使用,则可以使用
static局部变量。
| 归档时间: |
|
| 查看次数: |
4463 次 |
| 最近记录: |