static
Cでは、C ++でプライベートクラスメンバー変数を使用する場合に、(スタイルの問題として)ファイルスコープ変数を使用することがよくあります。マルチスレッドプログラムにスケーリングする場合thread_local
は、C11または長くサポートされている拡張機能を追加__thread
するだけで十分です。私はあなたが内部のすべてを置くことによってC ++とCで正確に同じことを行うことができます知っているstruct
し、それへのポインタをとる関数のセット作りstruct
、その最初の引数としてを。一部のライブラリは、これを広範囲にわたって実行します。しかし、私の個人的なスタイルはstruct
、必要に応じて、できるだけ小さくすることです。
「グローバル」変数が非常に悪いと主張する人々をよく読んだり聞いたりします。私はそれらの理由を追っていますが、彼らの議論のほとんどはextern
C用語のグローバル変数に関連しているようです。彼らの言うことは確かに真実です。extern
宣言された変数の1つまたは2つをプログラム全体で使用すると、処理が大幅に簡略化され、追跡が容易になる場合がありますが、さらに先に進むとプログラムが予測不可能になります。
何についてのstatic
変数?彼らはまだ「実際の」グローバル変数と同じ問題を抱えていますか?多分私はこの質問をして私がしていることが正しいと思うなら続ける必要さえないかもしれませんが、今日私は別の「グローバル変数は悪い」種類の投稿を見た、そしておそらくこれはおそらく正しいとここに来ましたそのような質問のための場所。あなたの考えは何ですか?
この質問はの重複ではありません。このこの質問はについて尋ねているためextern
とstatic
他の質問は、ファイル・スコープとブロックスコープについてです一方、非ローカル変数static
変数。