首页 > 代码库 > 示例:模拟内核中的面向对象方法
示例:模拟内核中的面向对象方法
内核中使用了大量的用c语言实现的对象
尤其是驱动中,基本上都是这种架构
这里写一个小例子,模仿内核中编程的方法
代码如下:
root@ubuntu:/mnt/shared/appbox/funcptr# cat funcptr.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> typedef struct { char *name; int (*write)(char *); int (*read)(char *); }FuncPtrSt; FuncPtrSt funcptr_ops; int funcptr_write(char *str) { printf("func:%s, line:%d, str:%s\n", __FUNCTION__,__LINE__, str); return 0; } int funcptr_read(char *str) { printf("func:%s, line:%d, str:%s\n", __FUNCTION__,__LINE__, str); return 0; } int funcptr_init(FuncPtrSt *fops) { fops->name = (char *)malloc(sizeof(32)); if(fops->name == NULL) { printf("malloc failed!\n"); return -1; } strcpy(fops->name, "funcptr"); fops->write = funcptr_write; fops->read = funcptr_read; return 0; } int funcptr_probe(FuncPtrSt *fops) { printf("fops->name:%s\n", fops->name); fops->write("write test!\n"); fops->read("read test!\n"); return 0; } int main(int argc, char *argv) { funcptr_init(&funcptr_ops); funcptr_probe(&funcptr_ops); return 0; }
执行结果:
root@ubuntu:/mnt/shared/appbox/funcptr# ./funcptr fops->name:funcptr func:funcptr_write, line:17, str:write test! func:funcptr_read, line:23, str:read test!
示例:模拟内核中的面向对象方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。