我对 C 编程有点陌生,我想问一个特定的问题。 我正在使用 MPLAB c18 编译器。
起初,当我开始编码并以很多变量结束时,有些是全局变量,有些是外部变量。
我在一篇关于变量封装的文章中找到了某句话。
Replacing
float x;
float y;
float z;
with these
float X();
float Y();
float Z();
这是一个意图吗
local variables inside the respective functions and assign
local float x= float x(); local float y= float y();
非常感谢您在这种情况下的投入和澄清。关于解释,我错了吗? 所以我的问题是,封装是否是为了减少全局并在函数中使用更多的局部变量?
问候
最佳答案
替换“float x”(可能是某些 header 中的 extern float x)有效地封装了变量。
您可能需要这样的东西:
float x(); /* get x */
void setX(float newVal); /* set x here */
但这很笼统,真正的实现需要根据您的需求量身定制(您需要 setter 吗?您需要 getter 吗?您需要优化它吗?)。
一般来说,特别是如果您是 C 语言的新手,封装有助于实现更简洁的设计并防止简单的错误。
例如,假设更改值 X 涉及执行其他一些任务(例如,X 是核导弹发射序列的倒计时)。
封装时,您的代码将类似于:
void setX(float newVal){
x = newVal;
startNuclearLaunchSequence();
}
如果您没有此 setter ,则需要找到您设置 X 的所有位置(也可能是您的同事设置的)并手动发射火箭,否则您会失火然后 - 再见天启。
我们不希望这样,对吗?
关于c - 嵌入式系统中封装的意图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935273/