Namespaces
Variants

File scope

From cppreference.net

Если декларатор или спецификатор типа, объявляющий идентификатор, находится вне любого блока или списка параметров, идентификатор имеет область видимости файла, которая завершается в конце единицы трансляции.

Итак, размещение объявления идентификатора (в деклараторе или спецификаторе типа) вне любого блока или списка параметров означает, что идентификатор имеет область видимости файла. Область видимости файла для идентификатора простирается от объявления до конца единицы трансляции, в которой появляется объявление.

Пример

Идентификаторы a, b, f и g имеют область видимости файла.

#include <stdio.h>
int a = 1;
static int b = 2;
void f (void) {printf("from function f()\n");}
static void g (void) {printf("from function g()\n");}
int main(void)
{
    f();
    g();
    return 0;
}
/* end of this translation unit, end of file scope */

Возможный вывод:

from function f()
from function g()