C では、翻訳単位内の static キーワードによってシンボルの可視性が決まります。ただし、n3092 では、名前空間スコープ内のオブジェクトに対するその使用は非推奨となり、n3225 では非推奨が削除されました。
不思議なことに、この変更に関するドキュメントは限られています。この記事では、その背後にある理由を詳しく掘り下げています。
C 標準コア言語の欠陥レポートと承認済みの問題のリビジョン 94、1012 では、非推奨の静的であり、次のように述べられています。
Although 7.3.1.1 [namespace.unnamed] states that the use of the static keyword for declaring variables in namespace scope is deprecated because the unnamed namespace provides a superior alternative, it is unlikely that the feature will be removed at any point in the foreseeable future.
本質的に、static の非推奨は見当違いでした。これは、名前のない名前空間のボイラープレート コードを必要とせずに、内部リンケージを使用して関数やオブジェクトを宣言する便利な方法を提供します。
1 つの懸念は、C との互換性でした。ただし、C プログラムを C としてコンパイルすることは、困難な場合があるため、この要素は重要な役割を果たしていない可能性があります。
static キーワードの非推奨は、それが C の貴重な機能であり続けるという認識を反映しています。名前のない名前空間は代替手段を提供しますが、静的は内部リンケージを使用してオブジェクトまたは関数を宣言するための簡潔で直接的なソリューションを提供します。
以上がC での static キーワードの非推奨が取り消されたのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。