最佳实践:变量,函数和Arduino?

时间:2014-01-05 13:51:46

标签: c++ arduino

我使用Sublime和Arduino编写气压计(MS5611)。但是,存储仅在特定函数中用作临时存储的变量的最佳实践是什么:

1)在我的头文件中为所有使用的变量创建私有变量吗?

2)在使用它们的函数内创建变量?

什么需要大多数处理能力和内存使用 - (1)创建一次作为私有变量并使用函数更改内容,或(2)每次调用函数时创建变量?

3 个答案:

答案 0 :(得分:0)

取决于您的采样率,这意味着调用函数保存数据的次数是多少? 在任何情况下,重要的是还要考虑一旦收集和处理数据后内存有多空,在任何情况下,如果你没有很多变量,但你必须处理更多的功能,使用它最好全局设置它们。 至少,我在我的项目中这样做,我从来没有遇到过问题。

答案 1 :(得分:0)

始终在函数内声明它们。这提高了可读性,因为它显示了声明背后的意图。它也降低了错误的机会。

尽可能为“const”,例如

uint16_t sample_it() {
    const uint16_t sample = analogRead(...);
    const uint16_t result = do_somehting(sample);
    return result;
}

几乎出于同样的原因,但这也为编译器提供了更多优化选项。

是否以及如何分配变量取决于编译器及其优化程序。除非您有 非常 严格的性能限制,否则编译器将比您更好地优化。实际上使用全局变量有时会降低代码的速度。当然你可以避免分配。但是,您需要支付额外的存储说明。另一方面,“分配”可能会被优化掉,然后你的全局变量代码变得比局部变量代码慢。

答案 2 :(得分:0)

你应该避免使用全局变量,因为它们是从可用的堆RAM中分配的,并且在程序的持续时间内存在(占用空间)(永远在嵌入式系统中)Globals也会减少可维护性和更脆弱的程序。

如果您只需要函数内部的数据,请在那里声明它。几乎没有惩罚(仅初始化),并且当函数返回时自动返回使用的空间,因为局部变量放在堆栈上和传递参数一样。