C 開発者は長い間、シンボルの可視性を制御するために翻訳単位内で 'static' キーワードを利用してきました。ただし、この手法は n3092 で非推奨となり、続いて n3225 で削除されました。
「static」の非推奨は、名前空間スコープでオブジェクトを宣言するための使用を阻止することを目的としていました。 、名前のない名前空間が好ましい代替手段を提供したためです。ただし、C の欠陥を追跡する問題により、この変更の微妙な理由が明らかになります。
C 標準コア言語欠陥レポートのリビジョン 94 では、問題 (1012.非推奨の静的) は次のように説明しています:
ただし 7.3.1.1 [namespace.unnamed]名前空間スコープで変数を宣言するための static キーワードの使用は非推奨であると述べています。これは、名前のない名前空間が優れた代替手段を提供するためであり、この機能が近い将来どの時点でも削除される可能性は低いと考えられます。
この更新により、事実上非推奨が取り消されます。 「静的」は、内部リンケージを持つ関数およびオブジェクトを宣言するための有効なキーワードとして引き続き使用されます。その主な利点は、名前のない名前空間を使用する場合と比較して、その簡潔さと追加の定型コードがないことにあります。
元の非推奨は、C の C 標準への準拠を強化することを目的としていました。 , C は名前のない名前空間を認識しないためです。ただし、非推奨を取り消すという決定は、C プログラムを C としてコンパイルする現実世界の複雑さを認識しています。
「static」の非推奨は善意によるものだったかもしれませんが、その削除はこれは、名前のない名前空間は、内部リンケージを使用してオブジェクトを宣言するための「静的」のユーティリティを完全に置き換えるものではないという認識を反映しています。その結果、C 標準における 'static' の存在がすぐに薄れる可能性は低いため、開発者は安心して 'static' を使い続けることができます。
以上がC の 'static' キーワードは本当に非推奨なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。