File scope
From cppreference.net
Si el declarador o especificador de tipo que declara el identificador aparece fuera de cualquier bloque o lista de parámetros, el identificador tiene ámbito de archivo, que termina al final de la unidad de traducción.
Por lo tanto, la ubicación de la declaración de un identificador (en un declarador o especificador de tipo) fuera de cualquier bloque o lista de parámetros significa que el identificador tiene ámbito de archivo. El ámbito de archivo de un identificador se extiende desde la declaración hasta el final de la unidad de traducción en la que aparece la declaración.
Ejemplo
Los identificadores a, b, f y g tienen ámbito de archivo.
Ejecutar este código
Salida posible:
from function f() from function g()