C++用纯面向过程的方式开发操作系统底层可行否
LINUS批评C++的也不过是没有垃圾回收,Boost...STL等高层的东西,而我记得C++是可以嵌套汇编开发底层的。为什么大家都认为只有C可以做到?哪些地方是C++做...
LINUS 批评C++ 的也不过是没有垃圾回收,Boost...STL等高层的东西,
而我记得C++是可以嵌套汇编开发底层的。
为什么大家都认为只有C可以做到?哪些地方是C++做不到的,一定要C才可以的??
这里说的是C++完全丢弃面向对象部分的编程思想,纯粹面向机器的思想来编程
由于c++编译器对c++的函数的命名扩展使得汇编程序无法与之接口
(这句话证据在哪里?) 展开
而我记得C++是可以嵌套汇编开发底层的。
为什么大家都认为只有C可以做到?哪些地方是C++做不到的,一定要C才可以的??
这里说的是C++完全丢弃面向对象部分的编程思想,纯粹面向机器的思想来编程
由于c++编译器对c++的函数的命名扩展使得汇编程序无法与之接口
(这句话证据在哪里?) 展开
3个回答
展开全部
C++用纯面向过程的方式开发操作系统底层是可行的。很多人说不可行,相信只有两种人会说这样的话,一种是像Linus这样的大牛,他们开发操作系统的时候还没有C++出现,等到C++出现的时候,他们过多地关注一些面向对象高层特性,比如虚函数、多态、模版库等,却忽视了C++是C的超集,你仍然可以使用C的思想去使用C++环境;第二种人是只会盲目跟风,没有深层次的理论研究和实际测试,人云亦云的二流程序员,他们对C语言大牛说的每一句话都不加怀疑地相信。
C++可以使用嵌套汇编。
可行归可行,但是用C++开发OS底层还是会碰到一些问题的,但都不难解决。c++编译器对c++的函数的命名扩展使得汇编程序无法与之接口,这种说法不是很专业,我估计是因为C++编译器在处理函数名时会进行一些修饰,比如int _ValidateRead(void const *,unsigned int)这种C函数用C++编译器处理后就变成了?_ValidateRead@@YAHPBXI@Z,会与C编译器编译的老的可执行文件冲突,可通过加编译器参数禁止这种修饰,也可以使用C++编译器将老的可执行文件重新编译来解决问题。
目前之所以不流行用C++开发底层,主要是因为Linux内核是纯C的,为了降低风险,很多公司不愿意冒险,但绝对不代表不行,也没有哪个组织公开过不可行的证据,仅此而已。
C++可以使用嵌套汇编。
可行归可行,但是用C++开发OS底层还是会碰到一些问题的,但都不难解决。c++编译器对c++的函数的命名扩展使得汇编程序无法与之接口,这种说法不是很专业,我估计是因为C++编译器在处理函数名时会进行一些修饰,比如int _ValidateRead(void const *,unsigned int)这种C函数用C++编译器处理后就变成了?_ValidateRead@@YAHPBXI@Z,会与C编译器编译的老的可执行文件冲突,可通过加编译器参数禁止这种修饰,也可以使用C++编译器将老的可执行文件重新编译来解决问题。
目前之所以不流行用C++开发底层,主要是因为Linux内核是纯C的,为了降低风险,很多公司不愿意冒险,但绝对不代表不行,也没有哪个组织公开过不可行的证据,仅此而已。
展开全部
绝对可行
因为机器码 汇编 c c++的内存管理策略是一致的(不像java c#是内存托管)
只要编译器支持就可以了
不过目前芯片厂的编译器基本都不支持c++,能支持c就不错了
至于神马命名接口 用extern "C"{}就搞定了 根本不是啥问题
因为机器码 汇编 c c++的内存管理策略是一致的(不像java c#是内存托管)
只要编译器支持就可以了
不过目前芯片厂的编译器基本都不支持c++,能支持c就不错了
至于神马命名接口 用extern "C"{}就搞定了 根本不是啥问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++可以做操作系统的,lz可以自行搜索一下eCos这个东西,虽然现在已经没人维护了。
我个人对这个的看法,我认为在很多处理中,c++只会将问题复杂化,所以就个人而言,不喜欢这种做法。给维护带来了一些复杂性。
至于ls说的wps和word的区别,我想可能是因为ls还不清楚word比wps功能多不少吧?word不仅仅是能编辑文字的。。
我个人对这个的看法,我认为在很多处理中,c++只会将问题复杂化,所以就个人而言,不喜欢这种做法。给维护带来了一些复杂性。
至于ls说的wps和word的区别,我想可能是因为ls还不清楚word比wps功能多不少吧?word不仅仅是能编辑文字的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询