打印
[经验分享]

(转)C语言是一种标准

[复制链接]
802|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
全速前行|  楼主 | 2015-11-2 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言是一种标准,这个标准定义了很多保留字,给这些保留字赋予了标准含义,也包含了很多预定义的h头文件(C标准只是定义了这些文件而没有实现)。而且C语言并未和某个底层硬件绑定,所以C语言是跨平台的,类似Java,不过C的跨平台只是源代码级的,对不同平台要编译成不同的代码,而Java本身就于平台无关,它是基于虚拟机的,也就是凭空设想的一个平台,这个平台对Java而言是一致的,但Java最终是要运行在某个实际平台上的,所以Java对上层的应用程序提供一致平台,对下层却是靠不同的Java解释器来实现的,也就是X86系列下有Windows版的解释器,也有Linux的解释器,甚至与手机上也有Java,这一切所改变的只是依赖于平台的解释器而已,而你的编译后的Java二进制代码而没有改变,神奇吧!
       平时我们用的各种C语言的编译器,例如Borland 的TurboC的编译器,Watcom的C编译器其实都是对C语言标准的一种实现,也就是给予C标准的解释。在C语言预定义的h头文件C语言本身并没有实现,而且里面的很多概念也是于平台无关的,比如file文件的概念,等等,这都需要各个平台自己根据自己平台提供的信息去实现这些功能,比如把file文件的概念和自己平台中相应的文件联系起来,然后包装后共C语言标准使用。更明显的是内存管理函数(例如malloc、realloc等函数)的实现,各个平台(同一个硬件平台下操作系统也可能不同)显然是差别很大的,各个平台根据自己内存的管理方式包装后实现C语言提供的内存管理函数,供C语言使用。
      同样C++也是一个标准,各个平台对其解释不同而已。

      由于C语言标准初制定时对某些标准作出的解释引起异议,所以有时候C程序也并非完全都是可移植,而且各个公司对C标准的实现有时候也不是完全实现了C标准或者加入一些非标的东东进去,这样更加导致C程序的可移植性,就好像微软的IE并未完全符合Html标准一样,所以就导致网页制作者要针对不同的浏览器设计不同的代码。
    为了提高C语言的开发效率,C标准定义了一系列常用的函数,称为C库函数。C标准仅仅定义了函数原型,并没有提供实现。因此这个任务留给了各个支持C语言标准的编译器。每个编译器通常实现了标准C的超集,称为C运行时库(C Run Time Libray) ,简称CRT。对于VC++编译器来说,它提供的CRT库支持C标准定义的标准C函数,同时也有一些专门针对windows系统特别设计的函数。
  与C语言类似,C++也定义了自己的标准,同时提供相关支持库,我们把它称为C++运行时库或C++标准库。
  由于C++对C的兼容性,C++标准库包括了C标准库,除此之外还包括IO流和标准模板库STL。
沙发
zh113214| | 2015-11-2 22:47 | 只看该作者
写的很好啊,C++ 感觉不是很好学

使用特权

评论回复
板凳
xia00| | 2015-11-2 22:52 | 只看该作者
Watcom的C编译器其实都是对C语言标准的一种实现,也就是给予C标准的解释。。

使用特权

评论回复
地板
毁灭2012| | 2015-11-3 22:12 | 只看该作者
C++也是一个标准,各个平台对其解释不同而已。。

使用特权

评论回复
5
CallReceiver| | 2015-11-4 20:22 | 只看该作者
C++运行时库或C++标准库。。这个在Android中是一样的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

82

帖子

0

粉丝