嵌入式系统中封装的意图

时间:2014-02-21 13:03:57

标签: c variables encapsulation

我对C编程有点新意,我想问一个问题。 我正在使用MPLAB c18编译器。

首先,当我开始编码并最终得到很多变量时,有些是全局性的,有些是外部的。

我在一篇关于变量封装的文章中找到了一个声明。

Replacing
 float x;
 float y;
 float z;

 with these
 float X();
 float Y();
 float Z();

是否打算用

  

各个函数内的局部变量并分配

     

local float x = float x(); local float y = float y();

我很感激你在这种情况下的意见和澄清。我对这个解释错了。 所以我的问题是,封装是否用于减少全局并在函数中使用更多局部变量?

此致

1 个答案:

答案 0 :(得分:1)

替换“float x”(可能是某些标题中的extern float x)有效地封装了变量 你可能需要这样的东西:

float x(); /* get x */
void setX(float newVal); /* set x here */

但这相当普遍,真正的实施需要根据您的需求量身定制(你需要一个安装者吗?你需要一个吸气剂吗?你需要优化吗?)。 一般来说,特别是如果你是C的新手,封装有助于更清洁的设计并防止出现简单的错误 例如,假设更改值X涉及执行其他任务(例如,X是核导弹发射序列的倒计时)。
封装时,您的代码看起来像:

void setX(float newVal){
    x = newVal;
    startNuclearLaunchSequence();
}

如果你没有这个制定者,你需要找到你设置X的所有地方(也许是你的同事)并手动发射你的火箭,否则你会失败然后再见 - 再见。
我们不希望这样,是吗?