2 u011475211 u011475211 于 2016.02.14 21:09 提问

关于c语言和C++语言,请高手指导

关于C语言和C++语言的比较,自己没有太多的编程经验,有一个问题一直困扰我,
1.为什么C语言和C++优势分别在哪,感觉C++抽象能力确实比C语言强大,但为什么
大多数操作系统都是用C语言写的,不是说C语言不适合编写大型程序吗?操作系统难道
还不算大型程序吗?(难道是为了效率,或者说C语言不适合编写需求不稳定的大型程序
,而操作系统只要提前做好规划,用C语言还是可以的?)
2.linux下C语言编程用的比较多,但是C语言经常用到全局函数,而C++的类一般都是对
本类的数据进行处理(而非全局函数),如何处理这个矛盾?linux下如何对底层API
进行封装?
3.在linux下有没有对底层API函数进行封装的类库(类似于windows下的MFC)?
问题有些多,请大家指导。

11个回答

caozhy
caozhy   Ds   Rxr 2016.02.14 21:53
已采纳

C语言不适合编写大型程序
操作系统(内核)还真的算不上大型程序。操作系统和其它软件不同,它的需求是基本恒定的,在有限的需求内需要绝对的可靠性和绝对的性能。

C++中优雅地使用全局数据的方式是使用单例模式(singleton pattern)

类似windows的mfc,在linux下进行gui编程,我们有qt gtk等等,和windows不同,linux的kernel和shell是分开的,我们有不止一种的gui。

caozhy
caozhy 回复朱君鹏: http://blog.csdn.net/kooder/article/details/4091094可以看出linux最初版本的内核(kernel)只有几千行代码,即便到了现在,也没有超过100万行代码。这种规模的程序,当然不能称之为大型软件。
6 个月之前 回复
jpzhu16
jpzhu16 简直瞎扯淡
6 个月之前 回复
John_ToStr
John_ToStr   Rxr 2016.02.17 15:53

linux 下是有封装API函数的库的。只不过当前最主流的桌面应用操作系统是Windows而不是Linux, 所以如果非Linux开发人员是很少用的

zuishikonghuan
zuishikonghuan   2016.02.14 23:27

1。对,也不对,关键看对“操作系统”怎么理解,Windows内核和Linux内核都是用主要C并混编汇编。c是非常贴近于硬件的程序语言,用于写系统内核非常适合,当然这里面更多是考虑到工作效率。但系统的用户层程序确不是C,以Windows为例,应用层是一个叫做nt native的环境,在nt native上面,就是我们看到的五彩缤纷的各种各样Windows应用程序,这些软件是Windows必须的,但他们大部分是用C++写的,少部分是C#。有很多人认为,操作系统自带的程序不是操作系统的一部分,操作系统=内核,那么如果这么理解,自然就是C了
2。以GNU/Linux为例(即排除Android、ChromeOS之类的Linux系统)操作系统内核的接口由C库封装,这个C库就是大名鼎鼎的Glibc!
3。Windows的底层API不是MFC封装的,可能是为了更贴近于微内核的原理,Windows的API调用非常复杂,从底层到应用大致分为:硬件抽象层(HAL)-设备驱动程序-I/O管理器等-内核服务例程及接口-NT Native API-win32子系统、unix子系统、OS/2子系统、……-win32子系统上-MFC、.NET、WinRT(Windows运行时)-APPX、UWP

zuishikonghuan
zuishikonghuan 所以,Windows上的底层接口封装应该是NT Native层,再怎么算也应该是Win32子系统,还轮不到MFC。如果楼主说的是界面库,Linux的图形界面是一个叫X window的软件实现的,常用X window有两种,一个叫Xorg,一个是XFree86,最底层的界面接口是X协议,在X协议之上封装了一个叫Xlib的库,他非常底层,所以很少有程序去用,在Xlib的基础上出现了GTK+和QT,这才是Linux GUI开发的首选
一年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2016.02.14 22:01

因为内核大部分还是c和汇编实现的。所以c来操作这些比较有优势。而c++在更抽象的上层。更适合系统级开发。

Reskip
Reskip   2016.02.14 22:28

C语言自由度极高,这是它的优点,也是最大的危险所在。
C就像你需要自己用各种零件拼出一个赛车,C++像直接买来引擎、车架拼出一个赛车。

所以如果一个公司要生产车的话,一般还是从头开始的。

VisualEleven
VisualEleven   Ds   Rxr 2016.02.16 14:05

内核基本上还是C和汇编,高效~C相对与其它语言C++,Java,C#等来说算是低级语言,但是相对于汇编这种低级语言来说又是高级的。

q3733353520
q3733353520   2016.02.17 17:51

汇编-> c -> 高级语言(C++)

collin18
collin18   2016.02.18 19:17

C语言、C++都是高级语言,用来开发大型软件都没有问题的。

C语言是面向过程的语言,C++是面向对象的语言。

如果要开发嵌入式软件,C语言更好,写出的程序短小、精悍,执行效率高。如果要开发PC软件,用C++语言更好,底层操作、应用界面都很容易实现。

qidongmiu0571
qidongmiu0571   2017.04.07 23:02

C在经过编译之后执行效率更高,因此和硬件契合度也就更好,像楼上所说,对效率要求高的代码很多都是C和汇编混写的。

91program
91program   Ds   Rxr 2016.02.14 21:23

C++是面向对象的,它的抽象是基本;C是过程的语言,指针是它的最大的优势、但同时也是它被“攻击”的主要点。作为“底层”语言,它的效率是它的优势。
C++也可以用来实现系统,只是历史的原因,大部分操作系统的底层是C语言。

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片