変数にstatic
というフラグを付ける用途はありますか?それは関数ではなく.cppファイルのグローバルスコープにありますか?グローバルスコープでの静的変数と関数の使用
関数にもstaticキーワードを使用できますか?はいの場合、その用途は何ですか?
変数にstatic
というフラグを付ける用途はありますか?それは関数ではなく.cppファイルのグローバルスコープにありますか?グローバルスコープでの静的変数と関数の使用
関数にもstaticキーワードを使用できますか?はいの場合、その用途は何ですか?
この場合、キーワードstaticは、関数または変数が同じcppファイルのコードでのみ使用できることを意味します。関連シンボルはエクスポートされず、他のモジュールで使用できなくなります。
グローバル関数または変数が他のモジュールで必要でないことがわかっている場合、大きなソフトウェアで名前の衝突を避けることをお勧めします。
C++では名前のない名前空間を使用する必要があります。 –
はい、ファイルスコープ変数を宣言する場合は、static
キーワードが必要です。 static
1つの翻訳単位で宣言された変数は、別の翻訳単位から参照することはできません。
ところで、static
キーワードの使用はC++ 03では推奨されていません。 C++標準から
セクション7.3.1.1 $/2(2003)を読み取り、
静的キーワードの使用は 名前空間スコープのオブジェクトを宣言する場合、非推奨 あります。 名前の付いていない名前空間は、代替の上位 を提供します。
C++はstatic
キーワードオーバー無名の名前空間を好みます。このトピックを参照してください。
最新のC++ 0xドラフトでは、それを廃止しました。 –
@Fred:それは面白い! – Nawaz
@Fred:面白いです、それはn3092とn3225の間で変わりました、あなたはこの変化を動機付けしたことを知っていますか? –
-
// At global scope
int globalVar; // Equivalent to static int globalVar;
// They share the same scope
// Static variables are guaranteed to be initialized to zero even though
// you don't explicitly initialize them.
// At function/local scope
void foo()
{
static int staticVar ; // staticVar retains it's value during various function
// function calls to foo();
}
彼らのプログラムが終了した場合にのみ/終了を存在するため、両方の停戦。
しかし、関数スコープの静的変数は、実行時に、またはスコープされた関数(この場合はfoo()が実行されたとき)にのみ初期化されますか? –
@Maheshデフォルトでstaticを指定しないと、globalVarは静的ではありませんか?静的でないグローバル変数を簡単に拡張できると思います。 – starkk92
宿題のような音 –
誰かが宿題を呼んでいるように聞こえる –