В C вы можете иметь внешние статические переменные, которые можно просматривать каждый раз в файле, тогда как внутренние статические переменные видны только в функции, но являются постоянными.
Например:
#include <stdio.h>
void foo_bar( void )
{
static counter = 0;
printf("counter is %d\n", counter);
counter++;
}
int main( void )
{
foo_bar();
foo_bar();
foo_bar();
return 0;
}
вывод будет
counter is 0
counter is 1
counter is 2
Мой вопрос в том, почему вы используете внутреннюю статическую переменную? Если вы не хотите, чтобы ваша статическая переменная была видимой в остальной части файла, не должна ли функция действительно находиться в ее собственном файле, то?