Взгляните на следующий фрагмент кода ...
File1.h
void somefunc(int);
File1.c
#include "File1.h"
extern int var;
void somefunc(int x)
{
......
var ++;
etc, etc,
....
return;
}
File2.h
static int var;
void someotherfunc(int);
File2.c
#include "File2.h"
#include "File1.h"
int var;
void someotherfunc(int z)
{
z = etc etc;
var --;
......
somefunc(z);
.....
return;
}
Приведенные выше четыре файла компилируются без проблем.Проблема возникает, когда я пытаюсь инициализировать переменную 'var'.Если 'var' инициализируется в File2.c, где это глобальная переменная, код компилируется без проблем.Но когда я пытаюсь инициализировать статическую переменную в File2.h, компилятор выдает ошибку, говоря, что «переменная« var »в File1.c не определена».Может кто-нибудь, пожалуйста, расскажите, что здесь происходит.
Я просто пытался понять концепцию статических переменных и натолкнулся на эту путаницу.Любая помощь будет оценена.