това е трудно да се обясни в текст, затова ще дам пример.
//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 във функцията, няма да използва стойността на статичната променлива.