回复
【FFH】HDF 驱动开发C语言知识学习 原创
Wait_Aurora
发布于 2022-2-17 23:00
浏览
1收藏
一、前言
先引用一个HDF驱动框架的介绍。*OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统 HDF 驱动框架采用 C 语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。*在介绍中有一句话引人注目,“C 语言面向对象编程模型”。我们都知道C语言是面对过程的语言,不具备面对对象的高级特性。难道这个不是我们了解的C语言?其实这个就是普通的C语言,只不过通过struct 和 typedef,可以实现面对对象的编程模型,观看本篇文章需要有一定的C语言基础,只是要知道指针、结构体、typedef的用法。
二、C语言类的实现
在C++中,在类中可以定义变量、构造函数、析构函数、普通函数。我们据此模仿一下类的结构,以创建一个物体类为例。
typedef struct{
int16_t x;
int16_t y; //x,y代表物体的坐标
}Object;
//Object 的方法
void Object_Create(Object *self, int16_t x, int16_t y); //定义一个构造方法
void Object_Destroy(Object *self); //定义一个析构方法
void Object_Move(Object *self,int16_t dx, int16_t dy); //定义一个普通方法
//构造函数,通过传入Obeject类的指针来修改Obeject类中的变量
void Object_Create(Object *self, int16_t x, int16_t y)
{
self->x=x;
self->y=y;
}
//析构函数,在对象使用完后释放内存
void Object_Destroy(Object *self)
{
if(self)
{
free(self)
}
}
//普通函数,实现Object对象的移动
void Object_Move(Object *self,int16_t dx, int16_t dy)
{
self->x+=dx;
self->y+=dy;
}
int main()
{
Object o1;
Object_Create(&o1,0,0);
printf("Object o1 position:x=%d,y=%d \n",o1.x,o1.y);
Object_Move(&o1,1,1);
printf("Object o1 position:x=%d,y=%d \n",o1.x,o1.y);
Object_Destroy()
}
这样我们就通过struct 和 typedef 以及一些函数,伪实现了一个类。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
赞
1
收藏 1
回复
相关推荐