他の C/C++ ファイルから静的変数にアクセスする方法を説明してもらえますか?
4 に答える
static
異なる文脈では異なることを意味するので、あなたが何を意味しているのか正確にはわかりません. しかし、 としてマークされた最上位スコープの変数を意味すると仮定するとstatic
、答えは、他のファイルから直接アクセスする信頼できる方法がないstatic
ということです。
.h
他のファイルからの静的変数への制限付きアクセスを許可する場合は、必要に応じて変数を読み取ったり操作したりする静的変数と同じファイル内に、ファイルで宣言された署名と定義を持つ関数または関数のセットを提供します。
静的変数への無制限のアクセスを許可したい場合は、意味static
の反対が必要なので、キーワードを削除するだけですstatic
。
1 つの方法は、静的変数のアドレスを別のファイルの関数に渡すことです。これは可能な方法の1つです。
スコープを制限して識別子 (オブジェクトの名前) を宣言すると、static
内部リンクまたはリンクなしになります。名前には外部リンケージがないため、別のソース ファイル (個別にコンパイルされたもの) の同じ識別子を名前にリンクすることはできません。
これは、他のソース ファイルが識別子を使用してオブジェクトにアクセスできないことを意味します。名前のないオブジェクトにアクセスする唯一の方法は、アドレスを使用することです。そのため、他のソース ファイルはstatic
、関数パラメーターやデータ構造など、何らかの方法でアドレスが指定されている場合にのみ、宣言された識別子に直接アクセスできます。
他のソース ファイルは、オブジェクトの値を読み書きするヘルパー関数、またはオブジェクトに関連する他のサービスを提供するヘルパー関数を介してオブジェクトに間接的にアクセスする場合があります。
.h ファイルを作成し、その中に静的変数を作成できます。次に、その .h ファイルを、使用する他のすべてのファイルに含める必要があります。静的な動作は実現されないことに注意してください。