如何在块中间重命名变量? 在C++中,如何通过块重命名变量中途?引用和宏感觉不正确。

如何在块中间重命名变量? 在C++中,如何通过块重命名变量中途?引用和宏感觉不正确。,c++,C++,最好的选择是创建一个新变量并将其设置为旧变量,然后删除旧变量。尽管我无法想象你为什么想要你最好的选择就是创建一个新变量,将它设置为旧变量,然后删除旧变量。虽然我无法想象你为什么会想我想你可以做一些可怕的事情,比如: int _internal; #define foo _internal foo = 3; #undef foo #define bar _internal std::cout << bar; int\u内部; #定义foo\u内部 foo=3; #undef foo

最好的选择是创建一个新变量并将其设置为旧变量,然后删除旧变量。尽管我无法想象你为什么想要

你最好的选择就是创建一个新变量,将它设置为旧变量,然后删除旧变量。虽然我无法想象你为什么会想

我想你可以做一些可怕的事情,比如:

int _internal;

#define foo _internal
foo = 3;
#undef foo
#define bar _internal
std::cout << bar;
int\u内部;
#定义foo\u内部
foo=3;
#undef foo
#定义条形图(内部)

我想你可以做一些可怕的事情,比如:

int _internal;

#define foo _internal
foo = 3;
#undef foo
#define bar _internal
std::cout << bar;
int\u内部;
#定义foo\u内部
foo=3;
#undef foo
#定义条形图(内部)
std::cout使用引用

int old_name = 1;
// ...
int& new_name = old_name;
new_name = 2;
但是为什么要这样做呢?

使用引用

int old_name = 1;
// ...
int& new_name = old_name;
new_name = 2;
但是你为什么要这样做呢?

你不能

但您可以引用它,并以不同的“名称”访问它。 如果您确实不喜欢该变量,只需退出当前块,从函数返回,离开该块。

您不能

但您可以引用它,并以不同的“名称”访问它。
如果您真的不喜欢这个变量,只需退出当前块,从函数返回,离开该块。

就个人而言,我认为您应该选择一个名称并始终坚持使用它。几周后,当你回去阅读你的代码时,你会挠头想你在想什么。如果您不喜欢在开始使用方法或类后选择的名称,大多数IDE都提供了一些重构功能,您应该能够使用这些功能快速、完整、正确地进行更改,并且或多或少地不费吹灰之力。如果您使用同一个变量来执行多个不同的目的,那么您应该使用更多的变量,每个变量用于不同的目的。

就个人而言,我认为您应该选择一个名称并始终坚持使用它。几周后,当你回去阅读你的代码时,你会挠头想你在想什么。如果您不喜欢在开始使用方法或类后选择的名称,大多数IDE都提供了一些重构功能,您应该能够使用这些功能快速、完整、正确地进行更改,并且或多或少地不费吹灰之力。如果您使用同一个变量来执行多个不同的目的,那么您应该使用更多的变量,每个变量用于不同的目的。

如果变量的目的在块的中途改变,您可能希望将块拆分为两个方法/函数,并将变量作为参数传递到每个方法/函数中

或者,如果块的前半部分生成变量的值,后半部分使用它,那么让第一个函数返回变量,第二个函数使用它

(编辑) 另外请注意,通过将局部变量放入额外的块定义中,可以避免临时名称冲突:例如

int x()
{
    int y = 0;
    {
        int i = /* create i */;
        y = compute_y(i);
    }

    int z = 0;
    {
        int i = /* create another i */;
        z = compute_z(y, i);
    }
    return z;
}
在这个函数中,变量i可以在不同的子块中声明两次,并且名称不会冲突,因为在创建第二个
i
之前,第一个
i
将超出范围


就我个人而言,如果我有足够大的函数需要这种作用域,我会将其拆分为多个较小的函数,正如我前面提到的。

如果变量的用途在块的中途更改,您可能希望将块拆分为两个方法/函数,并将变量作为参数传递给每个方法/函数

或者,如果块的前半部分生成变量的值,后半部分使用它,那么让第一个函数返回变量,第二个函数使用它

(编辑) 另外请注意,通过将局部变量放入额外的块定义中,可以避免临时名称冲突:例如

int x()
{
    int y = 0;
    {
        int i = /* create i */;
        y = compute_y(i);
    }

    int z = 0;
    {
        int i = /* create another i */;
        z = compute_z(y, i);
    }
    return z;
}
在这个函数中,变量i可以在不同的子块中声明两次,并且名称不会冲突,因为在创建第二个
i
之前,第一个
i
将超出范围


就我个人而言,如果我有足够大的函数需要这种作用域,我会将其拆分为多个较小的函数,就像我上面提到的那样。

我和其他人在一起-你为什么要这样做?因为很难想象一个合理的理由。总是有可能有一个合理的理由,所以提供它

这里的负面反应有很好的理由。做您要求的事情很容易成为维护的噩梦。英语中有很多单词可以正确命名变量,作为一名程序员,你可以自己编写

不管怎么说,这有点像你女儿出生后就叫吉尔,然后在她13岁生日时突然把她的名字改成苏西。实际上,当你的麻烦刚刚开始的时候,你就会制造麻烦


戴夫

我和其他人在一起-你为什么要这么做?因为很难想象一个合理的理由。总是有可能有一个合理的理由,所以提供它

这里的负面反应有很好的理由。做您要求的事情很容易成为维护的噩梦。英语中有很多单词可以正确命名变量,作为一名程序员,你可以自己编写

不管怎么说,这有点像你女儿出生后就叫吉尔,然后在她13岁生日时突然把她的名字改成苏西。实际上,当你的麻烦刚刚开始的时候,你就会制造麻烦


Dave

你为什么要这样做?你想实现什么?你想做的感觉不对。你可以给它一个完全模糊或晦涩且没有意义的名字,这样你就不必重新命名它。你为什么要这样做?你想实现什么?你想做的感觉不对。你可以给它一个完全模糊的名字