嵌入式开发为什么选择C语言及C的缺陷

来源:互联网 发布:c语言程序编程软件 编辑:程序博客网 时间:2024/05/22 05:06

一.嵌入式开发中为什么选择C语言

第一点:嵌入式是对操作系统的移植,而操作系统的开发中无论是上层应用层还是底层驱动都需要用到 C语言。C语言是面对结构语言,相对于那些面对对象语言,更适合解决嵌入式开发这种具体的工作 。


第二点:C语言有三大特点:1.良好的移植性  2.能够直接访问硬件   3.运行效率高

这也是它能够被选择的主要原因。 C语言为什么会具有这样特点呢?

1.良好的移植性:C语言在不同的软件平台,拥有相同的语法。在不同的硬件平台下同样适用。所以C语言可以在不同的软硬平台,进行很好地移植。


2.直接访问硬件: C语言中,我们可以通过指针控制内存以及寄存器。
我们知道汇编和C语言都可以直接访问硬件。但汇编的语法较为简单。因此在复杂的算法中,我们用C语言。而汇编用于初始化(启动方面)。

3.运行效率:C语言可以直接生成硬件识别的机器码。而其他的高级语言需要相应的语言解释器,再编译。


二.C语言的缺陷

c语言是面向过程机制,它有很多的缺点。

1.代码的复用性差;

2.代码的维护性差;

3.代码的扩展性差;

4.代码的可读性差。


如果想要更加详细的了解C的缺陷,请阅读《C语言陷阱和缺陷》。










三 .C语言需要模拟面向对象机制来弥补这些缺点。

   面向对象的特征为

(1)封装,隐藏内部实现

(2)继承,复用现有代码

(3)多态,改写对象行为

1.封装

封装是一种信息隐藏技术,它体现于类的说明,是对象的重要特征。封装数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

在c语言中,可以用结构+函数指针来模拟类的实现,而用这种结构定义的变量就是对象。我们可以在头文件中声明,在c文件中真正定义,这样可以隐藏内部信息,因为外部不知道对象所占内存的大小,所以不能静态的创建该类的对象,只能调用类提供的创建函数才能创建。这种方法的缺陷是不支持继承,因为子类中得不到任何关于父类的信息。

2.继承

继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类,当前RT-Thread的对象系统不能支持)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。
在c语言中,可以利用“结构在内存中的布局与结构的声明具有一致的顺序”这一事实实现继承。

3.多态

对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:抽象设备具备接口统一的读写接口。串口是设备的一种,也应支持设备的读写。但串口的读写操作是串口所特有的,不应和其他设备
操作完全相同,例如操作串口的操作不应应用于sd卡设备中。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在c语言中我们可以用万能指针void*来实现多态。






0 0
原创粉丝点击