C 容器禁止不完整類型的基本原理
在 C 程式設計世界中,容器是組織和操作資料的基本資料結構。然而,C 容器的一個獨特特徵是它們厭惡不完整的類型。為什麼會這樣呢?
答案在於 C 的歷史演變。在早期,標準範本庫 (STL) 實作很難處理類型不完整的容器。為了保持穩定性和向後相容性,標準化委員會決定在 C 標準中徹底禁止此類容器。
這種限制對於防止遞歸資料結構特別有效。它還確保現有的 STL 實現可以繼續按預期運行,而不會引入任何不可預見的問題。
但是,對不完整類型的禁止也引起了一些批評。它限制了某些高階資料結構的實現,並將受益於 C 標準未來修訂版的重新審視。
雖然標準容器仍然不完整的類型厭惡,但像 boost::container 背後的庫設計者已經採取了主動創建自己的容器,不施加此限制。這項決定允許 C 編程具有更大的多功能性和靈活性。
更新:
隨著 C 17 的出現,標準 C 庫中的某些容器已修改為允許不完整的類型。然而,這並不是一個普遍的變化,標準中的大多數容器的一般禁令仍然存在。
以上是為什麼 C 標準容器通常禁止不完整的型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!