在 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.
本質上,靜態的棄用是錯誤的。它提供了一種方便的方法來聲明具有內部連結的函數或對象,而不需要未命名命名空間的樣板程式碼。
一個問題是與 C 的兼容性。但是,將 C 程式編譯為 C可能具有挑戰性,因此這個因素可能沒有發揮重要作用。
消除靜電關鍵字棄用反映出人們認識到它仍然是 C 中的一個有價值的功能。雖然未命名的命名空間提供了一種替代方案,但 static 為聲明具有內部連結的物件或函數提供了簡潔而直接的解決方案。
以上是為什麼 C 語言中靜態關鍵字的棄用被逆轉了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!