2011-09-18 4 views
0

Cで変数を宣言されたファイルにのみアクセスできるようにする方法はありますか?Cで変数を宣言されたファイルにしかアクセスできないようにする方法はありますか?

私はこれを行うことが可能であることをどこか読んで覚えているので、これを尋ねていますが、私は実際にそれを行う方法を覚えていません。それは可能ですか、それとも私は想像していますか?

+0

私はそれが 'static'キーワードだと思っていましたが、プログラムが実行を終了するまで変数を' static'にしておかないのですか?それは今私を混乱させる... – CupOfTea

+2

'static'はCの多くの無関係なものに(残念なことに)使用されます。ブロック変数の場合は、変数の静的記憶期間が与えられます。グローバル変数(すでに静的な記憶期間がある)では、可視性を制御します。それはさらにC++でオーバーロードされています。 –

答えて

1

キーワードstaticを使用すると、グローバル変数の内部リンケージが得られます。つまり、の名前は他の翻訳単位には表示されません。しかし、これはあなたがその中を求めたものとは異なることに注意してください。

  • 名前はまだ同じ翻訳単位に含まれる他のファイル(ファイルが#includeディレクティブで含まれています)からアクセスすることができます。
  • 変数には、プログラム内の他の変換単位(モジュール)がアドレスを取得できる場合にアクセスできます。たとえば、ポインタを返す変数staticと同じ変換単位に関数がある場合などです。
1

静的あなたは

3

を探している単語は、静的なグローバルとしてそれを宣言しています。

static int foo; 
int incrementfoo() 
{ 
    return ++foo; 
} 
1

staticキーワードはこれを行います。対照的に、externキーワードを使用すると、他のファイルから他の変数をインポートすることができます。

関連する問題