static
перед глобальной переменной означает, что эта переменная недоступна извне модуля компиляции, где она определена.
например. представьте, что вы хотите получить доступ к переменной в другом модуле:
foo.c
int var; // a global variable that can be accessed from another module
// static int var; means that var is local to the module only.
...
bar.c
extern int var; // use the variable in foo.c
...
Теперь, если вы объявите var
статичным, вы не сможете получить к нему доступ из любого места, кроме модуля, в который foo.c
скомпилирован.
Обратите внимание, что модуль является текущим исходным файлом, плюс всех включенных файлов. то есть вы должны скомпилировать эти файлы отдельно, а затем связать их вместе.