C语言属于哪个编程范式,C语言面向对象的编程范式

上一篇文章提到的Lua的对象系统,是C语言实现面向对象的一个典范。但对于大部分工程项目来说,没有必要实现的那么复杂。这里介绍我采用的一个方案。

首先,可以设计一个结构体,用于整个模块的管理,结构体可以直接命名为模块名,该结构体最好定义在.c文件中。

一个功能模块内,可能需要有多个类引出,类的定义最好都放在.c文件中,以做到内部逻辑的隐藏。

//管理整个模块

struct module{

....

};

//模块内的类

struct subset{

....

};

整个模块需要加载到项目中,所以需要实现一个初始化函数,模块的卸载不是必须的(按经验,应该是没有必要的)。

需要提供各个类的构造、析构,调试接口,以及get,set方法。

需要声明一下需要导出的类,因为只是声明没有定义,外部调用只能持有类的指针,不能访问类的成员,这做到了面向对象的封装性。

struct subset;

int module_init();

//构造

struct subset *subset_create();

//析构

void subset_release(struct subset *);

//调试

void subset_debug();

//get set 方法

int subset_get_id(struct subset *);

int subset_set_id(struct subset *,);

一般情况下,模块还有一些逻辑要实现,模块的逻辑实现,我们围绕着模块管理这个结构体来做。

struct moudle{

list *subset; //组织模块内需要管理的类

...

};

struct module *M = NULL;

//单例实现

int moudle_init(){

if(M == NULL){

M = malloc(sizeof(*M));

.....

}

}

//模块内逻辑,返回值为错误码,一般0代表成功,-1代表失败

int module_xx_xx(struct subset*,... );//第一个xx是动词,第二个xx是名词

如果模块比较复杂,可以增加一个错误提示单元(往往并不需要)

enum{

MODULE_OK,

MODULE_ERROR,

MODULE_FAIL

};

static const char* ErrorMsg[] = {

"module_ok",

"module_error",

"module_fail",

};

const char *module_error(int errcode){

return ErrMsg(errcode);

}

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值