C面向对象-构建对象

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

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会更好理解。

你可能感兴趣的:(嵌入式系统设计,C面向对象)