面向对象的C语言框架尝鲜
来源:互联网 发布:山灵m2知乎 编辑:程序博客网 时间:2024/06/05 13:49
从学习编程开始就一直被灌输面向对象,继承,多态等等思想,工作后遇到一些纯C的编程工作还是有些不习惯,毕竟用C实现库以及中间件给别人使用也还是不如C++方便直观。
这几天偶然看到一个轻量级的面向对象的C编程框架LW_OOPC,作者通过宏定义封装了面向对象编程的一些工具,我们可以用来方便的指定类,继承,借口等。
首先下载框架包含到我们的项目中来(lw_oopc.h以及lw_oopc.c两个文件),我下面首先定义一个抽象类People,和一个Friend类,以及一个接口放在friend.h头文件中
#ifndef __FRIEND_H#define __FRIEND_H/* * friend.h */#include "lw_oopc.h"INTERFACE(ICall){void (*call)(ICall *ic);};ABS_CLASS(People){char name[100];int age;void (*say)(People* p,const char *word);void (*init)(People* p,const char* name,int age);};CLASS(Friend){EXTENDS(People);IMPLEMENTS(ICall);int tel;void (*init)(Friend* f,const char* name,int age,int tel);};#endif
类的声明很简单,主要是用框架中定义的几个宏替代C++中类的声明语法,接下来是类的成员函数的定义放在friend.c源文件中
/* * friend.c */#include "friend.h"void People_Say(People* p,const char* word){printf("%s¥n",word);}void People_Init(People* p,const char* name,int age){strcpy(p->name,name);p->age = age;}ABS_CTOR(People)FUNCTION_SETTING(say,People_Say);FUNCTION_SETTING(init,People_Init);END_ABS_CTORvoid Friend_Init(Friend* f,const char *name,int age,int tel){People *p = SUPER_PTR(f,People);People_Init(p,name,age);f->tel = tel;}void Friend_Call(Friend* f){printf("Hello Friend");}CTOR(Friend)SUPER_CTOR(People);FUNCTION_SETTING(init,Friend_Init);FUNCTION_SETTING(ICall.call,Friend_Call);END_CTOR
最后是我们的测试main.c
#include <stdio.h>#include "lw_oopc.h"#include "friend.h"int main (int argc, const char * argv[]) { // insert code here... Friend* f = Friend_new();f->init(f,"penjin",25,1590000000);People* p = SUPER_PTR(f,People);printf("Friend'name is %s and age is %d and tel number is %d¥n",p->name,p->age,f->tel);ICall* ic = SUPER_PTR(f,ICall);ic->call(f);lw_oopc_delete(f);lw_oopc_report(); return 0;}输出结果Friend'name is penjin and age is 25 and tel number is 1590000000 ¥n Hello Friend
使用起来还算比较方便简单的,将来如果遇到想实现C的面向对象编程,这个框架是个不错的选择,呵呵
- 面向对象的C语言框架尝鲜
- 轻量级的C语言面向对象编程框架
- 轻量级的C语言面向对象编程框架
- 轻量级的C语言面向对象编程框架
- 面向对象的C语言开发框架:Nesty
- C语言的面向对象
- 面向对象的c语言
- {C语言}之 轻量级的面向对象 C编程 框架 LW_OOPC
- C语言面向对象
- C语言面向对象
- 轻量级的C语言面向对象编程框架(约100行代码)
- 轻量级的C语言面向对象编程框架(约130行代码)
- 轻量级的C语言面向对象编程框架(约100行代码)
- C语言中面向对象的尝试
- C语言面向对象的实现
- 面向对象的C语言编程
- C语言面向对象思想的领悟
- C语言面向对象的构造
- Google Protocol Buffer 的使用和原理
- 凸包graham扫描法
- switch_to(n)函数
- 计算机网络试卷4
- 十三周任务四 Csolid CBox CBall CCylinder
- 面向对象的C语言框架尝鲜
- 字典树 poj 2001
- 查看Linux系统位数命令
- TCP/IP数据传输过程
- win7 下cmd运行sqlplus报错以下错误。SP2-1503: 无法初始化Oracle 调用界面,SP2-1503: 无法初始化Oracle 调SP2-0152
- 错误expected unqualified-id before string constant
- log4j 入门
- 如何删除系统管理员的账户
- Foreach用法