Linux 6.19 正式启用对 Microsoft C 扩展的支持
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 语言扩展的变更将成为内核可维护性与代码风格演进中的一个新起点。
踩一下[0]

站长云网
顶一下[0]