Petzold的《Windows程序设计》用的是C/C++。WINDOWS *** 作系统本身属于微内核系统,大部分应该是用C++编写,其余部分有C和汇编,底层接口用汇编编写。WINDOWS上的其他应用程序(如计算器、游戏等)是用VBasic编写的。编写 *** 作系统的代码和编写Windows下运行的程序可不是同一件事。
90%的C语言+10%的汇编语言
windows系统都主要是用C语言编写的
我们在用windows平台上编程的时候,要调用系统API(应用程序接口),这些接口封装在系统的dll(动态链接库)里面,所有的API函数都是32位平台上的C函数,从windows30一直windows95,到现在的win2003,都是基于C函数库的程序集,所以用C函数编出的系统程序系统执行效率最高,当然在底层的一些调用,不排除有些是用汇编编的,但内核大多是用C做的。
另:MFC只是windows系统上API函数的封装,基于面向对象原理,服务于GUI程序设计,MFC从AFX发展而来,已有十多年的历史,最新的MFC60,那是设计基于windows系统程序的,而不是用来编写 *** 作系统本身,但也不能完全这样说,系统上有些服务(可以说很多,比如时间)是用MFC做的。
一、主体不同
1、Windows程序设计:基于MFC类库进行的程序开发设计。
2、C语言:是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。
二、特点不同
1、Windows程序设计:以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
2、C语言:仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。
三、优缺点不同
1、Windows程序设计:包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。专心的考虑程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性。
2、C语言:依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接 *** 作,因此既能够用于开发系统程序,也可用于开发应用软件。
参考资料来源:百度百科-c语言
参考资料来源:百度百科-MFC
windows是一个大型的系统软件,分成很多个部分,由很多名程序员分别完成的。每个程序员可能都有自己擅长的一种编程语言,各自使用自己擅长的语言(可能是c、c++、vb…………)编写程序完成自己所负责的那部分程序功能,然后再编译,组合成最后的windows *** 作系统软件。整个过程类似工厂里面生产大型设备,各自完成不同部件之后再组装。
根据几年前微软在美国公布的内容,windows本身属于微内核系统,windows98总共大概不到10万行代码(具体是2万还是5万记不清了),而windows2000则已经有20余万行代码,其中80%是用c++编写,其余部分有c和汇编,底层接口用汇编编写。
微内核系统从概念上是指“只包括 *** 作系统的基本功能,例如内存管理和进程管理等等”,就连对各个文件系统的支持也不算在内,不过具体windows是不是这样设计我就不清楚了。
所以一个微内核系统的 *** 作系统能够有20万行代码已经很多了。
之所以微软选择了c++而不想linux一样选择c,其根本原因就是windows *** 作系统本身是微内核系统,所以扩展性及以后的维护要求非常重要,所以c++的类的概念就能在这里很好的利用,但是毕竟c++的效率不如标准c及汇编,所以在一些明显以效率为重的地方用的还是标准c及汇编。
编写完毕后,windows上的其他用户态程序(包括所有驱动程序、计算器、游戏等等所有你现在拿鼠标能够 *** 作的东西)另行开发,例如:扫雷游戏就是用vb写的。
c语言就能写,给你写一个windows版的hello
world,代码如下:
#ifdef
unicode
#undef
unicode
#endif
#include<windowsh>
lresult
callback
msgproc(hwnd
hwnd,
uint
msg,
wparam
wparam,
lparam
lparam);
int
main()
{
wndclassex
wc;
zeromemory(&wc,
sizeof(wc));
wchinstance
=
getmodulehandle(null);
wccbsize
=
sizeof(wc);
wclpfnwndproc
=
msgproc;
wclpszclassname
=
"classname";
wchbrbackground
=
createsolidbrush(rgb(100,
149,
237));
registerclassex(&wc);
hwnd
hwnd
=
createwindow("classname",
"hello
world
window",
ws_overlappedwindow,
200,
100,
800,
600,
null,
null,
wchinstance,
null);
showwindow(hwnd,
sw_show);
updatewindow(hwnd);
msg
msg;
while
(getmessage(&msg,
null,
0,
0))
{
translatemessage(&msg);
dispatchmessage(&msg);
}
return
0;
}
lresult
callback
msgproc(hwnd
hwnd,
uint
msg,
wparam
wparam,
lparam
lparam)
{
hdc
hdc;
switch
(msg)
{
case
wm_paint:
hdc
=
getdc(hwnd);
textout(hdc,
100,
100,
"hello
world",
11);
return
0;
case
wm_destroy:
postquitmessage(0);
return
0;
}
return
defwindowproc(hwnd,
msg,
wparam,
lparam);
}
根据几年前微软在美国公布的内容,WINDOWS本身属于微内核系统,WINDOWS98总共大概不到10万行代码(具体是2万还是5万记不清了),而WINDOWS2000则已经有20余万行代码,其中80%是用C++编写,其余部分有C和汇编,底层接口用汇编编写。
微内核系统从概念上是指“只包括 *** 作系统的基本功能,例如内存管理和进程管理等等”,就连对各个文件系统的支持也不算在内,不过具体WINDOWS是不是这样设计我就不清楚了。
所以一个微内核系统的 *** 作系统能够有20万行代码已经很多了。
之所以微软选择了C++而不想LINUX一样选择C,其根本原因就是WINDOWS *** 作系统本身是微内核系统,所以扩展性及以后的维护要求非常重要,所以C++的类的概念就能在这里很好的利用,但是毕竟C++的效率不如标准C及汇编,所以在一些明显以效率为重的地方用的还是标准C及汇编。
编写完毕后,WINDOWS上的其他用户态程序(包括所有驱动程序、计算器、游戏等等所有你现在拿鼠标能够 *** 作的东西)另行开发,例如:扫雷游戏就是用VB写的
以上就是关于windows *** 作系统是用什么语言编的全部的内容,包括:windows *** 作系统是用什么语言编的、windows *** 作系统是用什么编写的、Windows程序设计与C语言的主要区别是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)