Linux 6.19 正式启用对 Microsoft C 扩展的支持
Linux 内核 6.19 正式启用了对 Microsoft C 扩展(Microsoft C Extensions)的支持!
这一变更由 Linus Torvalds 在无反对意见的情况下合并入主线 Git,标志着此前多次尝试未果的提案终于落地。从现在起,内核构建时默认启用 GCC/Clang 的 -fms-extensions 编译选项,允许在代码中使用这套非标准但广泛存在的 C 语言扩展。
所谓“微软 C 扩展”,最初源于 Microsoft Visual C++ 编译器,用于支持其 Windows 头文件中的特殊语法。GCC 和 Clang 后来也实现了兼容支持。这些扩展虽不符合 ISO C 标准,但在跨平台开发或复用微软生态接口时非常实用。
此次启用的核心价值在于:允许在结构体或联合体中匿名嵌入带标签的子结构体/联合体。这既能保留类型信息,又能让字段访问更简洁直观。例如,在 Btrfs 文件系统代码中,开发者已开始试点该特性——通过重构结构体定义,使代码逻辑更清晰、维护更轻松,同时完全保持原有语义不变。
Btrfs 成为首个采用该特性的内核子系统,其转换示例为后续其他模块提供了参考样板。官方认为,这种写法能让内核代码更“漂亮”、更具可读性。
尽管过去曾有多次推动全局启用 -fms-extensions 的尝试,但均因兼容性或风格争议未能进入主线。如今随着社区共识达成,这项变更正式成为 Linux 内核演进的一部分。
技术细节可查阅主线提交:
🔗 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2ddcf4962c1834a14340a1f50afafc3276c015bd
随着 Linux 6.19 同步推进调度优化、加密性能提升和电源管理改进,这项看似细微的语言级支持,实则为内核代码的长期可维护性与现代化迈出了一小步——也是关键一步。





