это сложно объяснить в тексте, поэтому я приведу пример.
//f1.c
int a = 5;
int main()
{
printf("func2() output is: %i\n", func2() );
return 0;
}
//f2.c
static int a = 3
int func2()
{
extern int a;
return a;
}
Когда я компилирую и запускаю это, я получаю 3, хотя ожидал 5. Может ли кто-нибудь объяснить мне, почему я получаю 3? Я бы подумал, что при использовании extern внутри функции не будет использоваться значение статической переменной.