如果两个在C中具有相同的名称而不使用第三个变量,如何将局部变量复制到全局变量?

前端之家收集整理的这篇文章主要介绍了如果两个在C中具有相同的名称而不使用第三个变量,如何将局部变量复制到全局变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个全局变量和一个具有相同名称的局部变量.我可以将局部变量复制到全局变量(assign),而无需先将全局变量的值分配给某个临时变量(使用extern),然后将临时变量分配给全局变量吗?
我需要做这样的事情:
#include<stdio.h>
int myVariable = 50;
void myFunction()
{
    int myVariable;
    myVariable /*global*/ = myVariable /*local*/;
}

在C中是否有某种方法可以做到这一点(不使用临时变量(或数组中的指针))?我发现在C,Java或C#中可以使用像这样的关键字,super,base等,但在C中找不到解决方案.

我已经提到了How can I access a shadowed global variable in C?

解决方法

在C99中,无法指定要使用的变量/常量的特定范围.当引用变量/常量时,它将自动引用最内部的范围.

从C99标准6.2.1.4:

… If an identifier designates two different entities in the same name space,the scopes might overlap. If so,the scope of one entity (the inner scope) will be a strict subset of the scope of the other entity (the outer scope). Within the inner scope,the identifier designates the entity declared in the inner scope; the entity declared in the outer scope is hidden (and not visible) within the inner scope …

那么我该如何解决这个问题呢?

简单,更改最内层范围变量的名称:)

猜你在找的C&C++相关文章