关闭

linux c面向对象分析

608人阅读 评论(0) 收藏 举报
分类:

我写驱动从来不理解驱动的代码流程,就是根据框架,就像堆积木直接写好。

最近好好的看了看linux内核的源代码,以及高焕堂先生的UML+OOPC嵌入式C语言开发精讲

,才发现原来c功能这么强大。

举例

struct k_object{

struct file_operations fops;

void* data;

void* others;

};


struct aa{


struct k_object* kobj;

}

类继承是通过包含来实现的。

它们的访问是这样的,

子类访问父类

struct aa tst;tst->kobj

父类访问子类

container_of()

这里提醒下,根据父子类的创建时间(即生存周期)它们有两种关系,组合和包含。

组合是子类创建时才创建父类,这样子类销毁时父类也没了,严格来讲,这不是父子关系?????。感觉linux使用的是这种方式。,有待考证

而包含是父类先创建,子类创建时将kobj的指针指向父类。父类不会随着子类的销毁而销毁。

多态是通过接口函数来实现的。

tst->kobj->fops = fread();



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:516955次
    • 积分:6386
    • 等级:
    • 排名:第3784名
    • 原创:110篇
    • 转载:213篇
    • 译文:1篇
    • 评论:35条
    最新评论