プログラムにおいて、ファイル(ソースファイル)内あるいは翻訳単位内で有効な識別子(変数や関数などの名前)のスコープのことです。
プログラミング言語ごとの違いはありますが、関数やクラス、ブロックなどの外側で宣言された識別子がファイルスコープを持ちます。ファイルスコープを持つ識別子は、宣言されたファイル内全体で有効であり、そのファイルのどこからでもアクセスできます。そのため、同じ名前の関数や変数が異なるファイルのファイルスコープで宣言されていても、互いに影響を与えることはありません。
ただし、C言語の場合、インクルードによってほかのソースファイルの内容を取り込むことができるため、同じソースファイル内かどうかということよりも、翻訳単位が同一であるかがポイントになります。本当に同じソースファイルからのみアクセスできるようにするためには、変数宣言時に static指定子を付加します。
また、C++ の場合、名前空間が存在するため、名前空間スコープと呼びます。名前空間に囲まれていない場合はグローバルスコープと呼ぶこともありますが、これも名前空間スコープの一種と考えられます。
C言語にも名前空間と呼ばれる仕様はありますが、C++ とは意味が異なります。
ファイルスコープを持つ変数のことをグローバル変数と呼ぶことがありますが、厳密には正確ではありません。グローバル変数はプログラム全体で有効な変数であり、ファイルスコープはこれと正確に同じとはいえない可能性があります。
C言語のスコープについてはC言語編「スコープと記憶域期間」で、C++ のスコープについては新C++編「スコープと名前空間」で詳しく解説しています。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |