为什么linux的内核用c不用c++

为什么linux的内核用c不用c++,第1张

最主要的原因是C语言写的程序你能大致知道编译器会做些什么,但C++的程序则会完全失控,你根本不知道编译器会在背后做多少事情,这对于linux内核这样的底层程序来说是很成问题的

另外,尽管C++在某些方面给开发者提供便利,但C语言如果用得好很多时候也能达到与之相当的便利程度

Linus Torvalds本人也反对使用C++开发内核,据说他曾经也试过C++,不过没搞成功,以后应该也不会再折腾了

内核开发者ArndBergmann发出了一个新的补丁,允许Linux内核在指定C11的GNU方言时默认使用“-std=gnu11”。

事件的前因后果为,Linux内核社区日前曾讨论了是否要为内核采用现代C语言标准。Linus在讨论中提出了从C89提升到C99的想法;并表示,内核代码一直停留在C89的原因之一是编译器gcc的旧版本会出现奇怪的问题,导致初始化程序被破坏。但现在内核要求的GCC最低版本已经提高到了v5.1,那些bug可能已经不再相关。

最后事实证明,以当前内核的最低版本编译器要求和当前代码的条件,他们实际上可以开始使用C11构建内核。ArndBergmann提议直接升级到C11甚至C2x。虽然他不确定C11是否会带来任何对内核有用的新内容,但如果升级到C17或C2x,会破坏对gcc-5/6/7的支持;因此升级到C11更容易实现,而且跨越太大内核社区未必接受。

Linus对该想法表示了赞成。在Bergmann确认此举可行后,Linus宣布将在下一个内核版本v5.18中尝试使用C11标准。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6169338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存