Linux 內核 6.19 版已經在主線 Git 中啟用了微軟 C 擴展(Microsoft C Extensions)支持,內核在構建時統一加入 -fms-extensions編譯選項,為使用這一非標準擴展打開了大門。 該更改由 Linus Torvalds 在無人反對的情況下合并,標志著此前多次嘗試未果的相關工作終于正式落地。
![]()
所謂微軟 C 擴展,是 GCC 與 LLVM/Clang 在編譯時可選支持的一組非標準 C/C++ 語言特性,其命名緣于最初用于微軟頭文件并由 Microsoft Visual C/C++ 編譯器予以支持。 這些擴展允許在代碼中采用某些標準 C 規范之外的寫法,以便在移植或復用部分微軟生態中的接口和結構定義時更加方便。
此次在 Linux 6.19 中啟用微軟 C 擴展,重點在于允許在一個結構體或聯合體中匿名嵌入帶標簽的結構體/聯合體,從而在保持類型信息的前提下簡化訪問方式。 開發者認為,這種寫法能夠在一定程度上讓內核代碼更為“漂亮”、更易維護,而此前試圖在全局啟用 -fms-extensions 的努力最終都未能推進到主線。
目前,這一選項已進入主線內核樹,并開始在部分子系統中試點使用,其中 Btrfs 文件系統代碼是早期采用者之一。 官方給出的 Btrfs 轉換示例展示了如何利用該擴展重構結構體定義,使字段訪問更加直接,同時保持原有語義不變,為后續更多子系統的跟進提供了參考樣板。
更多關于此變更的技術細節與代碼調整,可在本次 Kbuild 合并提交中查看,相應提交已公開在內核源碼倉庫中供開發者審閱:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2ddcf4962c1834a14340a1f50afafc3276c015bd
隨著 Linux 6.19 在其他方面也陸續引入如調度、加密性能與電源管理等改進,這項針對 C 語言擴展的變更將成為內核可維護性與代碼風格演進中的一個新起點。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.