重複の可能性:
静的変数
Cで別のファイルから静的変数にアクセスするには? Static 変数にはファイル スコープがあるため、ファイルの外部にアクセスする方法はないと思います。それでも、同じことをするためのトリックや方法があるかもしれないと私は感じています.
重複の可能性:
静的変数
Cで別のファイルから静的変数にアクセスするには? Static 変数にはファイル スコープがあるため、ファイルの外部にアクセスする方法はないと思います。それでも、同じことをするためのトリックや方法があるかもしれないと私は感じています.
簡単な方法はないと思います。static 変数を使用してファイルを変更できる場合は、次のようなことができます。
static int hiddenVar; // The static var you want to get at
// A new function you write
int * getHiddenVar() {
return &hiddenVar;
}
ただし、もちろん、ファイルを変更できる場合は、 static キーワードを削除するだけです。
また、これが役立つとは思えませんが、FreeBSD でカーネル モジュールを作成するときに、このようなことをしなければなりませんでした。カーネルのリンカー関数を呼び出して静的関数のアドレスを見つけるトリックを使用しました。ただし、通常の C プログラムでこれを実行できるとは思えません。
宣言でexternキーワードを使用して、変数が別のファイルから取得されることを指定します (外部リンケージ)。元の定義で static キーワードを削除します。
外部と内部のリンケージについては、この記事で説明しています。
これは間接的にのみ行うことができます。たとえば、静的変数を含むファイルのスコープ内の関数がその変数へのポインターを渡す場合です。