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()