C面向对象-构建对象

来源:互联网 发布:如何查看淘宝降权 编辑:程序博客网 时间:2024/06/06 06:32

一组松散的变量是比较难追踪的,所以一般采用结构体将其封装起来

struct{    tBoolean logOn;    static enum eLogLevel ouputLevel[NUM_LOG_SUBSYSTEMS];}sLogStruct;

一般我们会选择直接进行创建,像这样:

static struct sLogStruct gLogData;

但是如果要让C代码看起来更像面向对象,那么这个结构体应该在初始化的时候进行创建,分配内存,并返回给调用函数:

struct sLogStruct* LogInit(){    int i;    sruct sLogStrct *logData = malloc(sizeof(*logData));    logData->FALSE;    for(i = 0; i < NUM_LOG_SUBSYSTEMS; i++){        logData-> outputLevel = eNoLogging;    }    return logData;}

这样做的好处不单单实现了面向对象,而且还可以在初始化的时候对一些变量进行特殊赋值。当然还需要增加一个方法去释放这个对象,这个时候只需要增加一个函数就可以了。

int LogClose(struct sLogStruct* logData){    if(logData!= NULL){        free(logData);        return 1;    }    return 0;}

当然一些C面向对象的范式里头会提到将上面Init与Close的函数命名为LogData和_LogData,以更靠近C++语法,但是个人认为对于嵌入式而言,init与close会更好理解。