Namespaces
Variants

File scope

From cppreference.net

Si le déclarateur ou le spécificateur de type qui déclare l'identifiant apparaît en dehors de tout bloc ou liste de paramètres, l'identifiant a une portée de fichier, qui se termine à la fin de l'unité de traduction.

Ainsi, la déclaration d'un identifiant (dans un déclarateur ou un spécificateur de type) placée en dehors de tout bloc ou liste de paramètres signifie que l'identifiant a une portée de fichier. La portée de fichier d'un identifiant s'étend de sa déclaration jusqu'à la fin de l'unité de traduction dans laquelle elle apparaît.

Exemple

Les identifiants a, b, f et g ont une portée de fichier.

#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 */

Sortie possible :

from function f()
from function g()