Я видел в этом посте , что мы можем раскрыть глобальную переменную, в которой локальная переменная с тем же именем находится в области видимости, используя extern
и составной оператор.
В этомpost, приведенный пример похож на
#include<stdio.h>
int a = 12;
int main(void)
{
int a = 15;
printf("Inside a's main local a = : %d\n", a);
{
extern int a;
printf("In a global a = %d\n", a);
}
return 0;
}
, а теневая переменная является глобальной переменной.
Но когда я попробовал программу наподобие
#include<stdio.h>
int main()
{
int i=5;
for(int i=0; i<2; ++i)
{
{
extern int i;
printf("\nGlobal: %d", i);
}
printf("\nLocal: %d", i);
}
}
, она не удалась.
Я попытался сделать внешнюю i
статической, если она работает, только если внешняя переменная является статической, но все еще не работает.
Может кто-нибудь сказать мне, почему вторая программа не 'т работаешь?И как обойти это, если это возможно?
Может быть, этот метод работает, только если внешняя переменная является глобальной?
Редактировать: комментарии заставили меня понять, что использование extern
будет простосделать глобальную переменную видимойНо есть ли способ обойти это без изменения имени переменной?