如何在c++中引用与局部变量同名的全局变量
How to refer to a global variable which has the same name as a local variable in C++?
如果存在一个全局变量,并且函数有一个同名的形参,并且期望的结果是局部变量和全局变量的和,那么在这种特殊情况下我们如何引用全局函数呢?我知道这样做不是个好主意。只是出于好奇。
int foo = 100;
int bar(int foo)
{
int sum=foo+foo; // sum adds local variable and a global variable
return sum;
}
int main()
{
int result = bar(12);
return 0;
}
到目前为止,最好的选择是重命名函数参数,这样它就不会与全局变量冲突,因此不需要规避。
假设重命名选项不可接受,使用::foo
在全局作用域引用foo
:
#include <iostream>
int foo = 100;
int bar(int foo)
{
int sum = foo + ::foo; // sum adds local variable and a global variable
return sum;
}
int main()
{
int result = bar(12);
cout << result << "n";
return 0;
}
局部名称和全局名称之间的冲突是不好的——它们会导致混淆——所以值得避免它们。您可以在GCC中使用-Wshadow
选项(g++
, C代码使用gcc
)来报告阴影声明的问题;与-Werror
一起,它停止代码编译。
使用::foo
-但真的不要这样做。它会让每个人感到困惑,你真的不应该做这些事情。相反,重命名一个或另一个变量。使用::
前缀来解决这个问题是一个糟糕的主意。
最佳做法是始终以小写"&;g"开头命名全局变量。如gX gY
从一开始就不清楚应该给变量起什么名字。
:: foo。这是一个很酷的技巧
相关文章:
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- 使用全局变量与局部变量和require
- 将变量声明为全局变量,然后声明为局部变量 -Shadowing-
- 局部变量如何隐藏全局变量
- 编译器是否可以从全局变量中读取两次,而不是存储一个局部变量
- 我不知道如何让我的程序使用局部变量而不是全局变量
- 怎么可能有两个同名的变量——一个是全局变量,另一个是局部变量
- 递归计算在不使用静态局部变量,全局变量或静态函数的情况下,在递归函数中发生的环数
- 初学者程序员 c++(局部与全局变量声明)
- 使用局部全局变量在单独的线程中运行C函数
- Arduino/C++全局变量与局部变量
- 编译器如何知道变量是全局变量还是局部变量(C)
- 当局部变量被复制到全局变量时,C++GCC优化速度会减慢
- 为什么局部变量不隐藏数组定义中的全局变量
- 要创建持久变量,最好是使用局部静态变量还是全局变量
- 全局变量和局部变量
- C++:全局变量与局部变量.使用什么
- C++-全局变量与局部变量的读/写速度
- 理解局部和全局变量:C++
- 在 C++ 中将局部变量分配给全局变量