C 開發人員長期以來一直在翻譯單元中使用「static」關鍵字來控制符號可見性。然而,這種做法在 n3092 中被棄用,隨後在 n3225 中被刪除。
棄用「static」旨在阻止其在命名空間範圍內聲明對象,因為未命名的命名空間提供了更好的替代方案。然而,追蹤 C 缺陷的問題揭示了這一變化的微妙原因。
在C 標準核心語言缺陷報告的修訂版94 中,問題(1012. Undeprecating static ) 解釋:
雖然7.3.1.1 [ namespace.unnamed] 聲明不建議使用static關鍵字在命名空間範圍內聲明變量,因為未命名命名空間提供了更好的替代方案,在可預見的將來,該功能不太可能在任何時候被刪除。
此更新有效地逆轉了棄用。 「靜態」仍然是聲明具有內部連結的函數和物件的有效關鍵字。與使用未命名命名空間相比,它的主要優點在於簡潔且無需額外的樣板程式碼。
最初的棄用旨在增強 C 對 C 標準的遵守,因為 C 無法識別未命名的命名空間。然而,撤銷棄用的決定承認將 C 程式編譯為 C 的現實世界的複雜性。
棄用「static」可能是善意的,但將其刪除反映了這樣的認識:未命名的命名空間並不能完全取代「靜態」用於聲明具有內部連結的對象的實用性。因此,開發人員可以繼續放心地使用“靜態”,因為它在 C 標準中的存在不太可能很快消失。
以上是C 中的「static」關鍵字真的被棄用了嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!