【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
回复
举报
回复
    相关推荐