我使用Sublime和Arduino来编程晴雨表(MS5611)。但是,什么是存储只是用作临时存储特定函数内部变量的最佳做法:最佳实践:变量,函数和Arduino?
1)创建适用于所有变量我的头文件中的私有变量?
2)在使用它们的函数内部创建变量?
什么最需要的处理能力和内存使用情况 - (1)一次性创建为私有变量和更改与职能的内容,或(2)创建变量每个I调用一个函数的时间?
我使用Sublime和Arduino来编程晴雨表(MS5611)。但是,什么是存储只是用作临时存储特定函数内部变量的最佳做法:最佳实践:变量,函数和Arduino?
1)创建适用于所有变量我的头文件中的私有变量?
2)在使用它们的函数内部创建变量?
什么最需要的处理能力和内存使用情况 - (1)一次性创建为私有变量和更改与职能的内容,或(2)创建变量每个I调用一个函数的时间?
取决于您的采样率,这意味着多少次调用该函数来保存数据? 在任何情况下,重要的是还要考虑收集和处理数据后内存如何清空,无论如何,如果您没有太多变量,但必须处理更多可以使用的函数最好将它们设置在全球范围内。至少,我在我的项目中这样做,我从来没有遇到过问题。
总是在函数中声明它们。这样可以提高可读性,因为它显示了声明背后的意图。它也降低了犯错的几率。
尽可能以“const”为例,例如,
uint16_t sample_it() {
const uint16_t sample = analogRead(...);
const uint16_t result = do_somehting(sample);
return result;
}
几乎出于同样的原因,但这也给了编译器更多的优化选项。
是否以及如何变量分配要由编译器和优化。除非你有非常紧性能限制有机会,编译器将优化比你好得多。实际上,使用全局变量有时会减慢代码速度。当然你可以避免分配。但是,您将通过额外的存储说明付款。另一方面,“分配”可能会被优化掉,然后你的全局变量代码变得比局部变量代码慢。
您应该避免使用全局变量,因为它们是从可用堆RAM中分配的,并且在程序期间存在(占用空间)(永远在嵌入式系统中)。全局变量还会降低可维护性和更脆弱的程序。
如果你只需要一个函数里面的数据,有申报。几乎没有惩罚(仅初始化),并且当函数返回时自动返回已用空间,因为局部变量作为传递参数放置在堆栈上。
如果您的函数只能用于单个函数,那么将它们定义为函数中的局部变量。函数使用的堆栈空间将会增加,但是在函数执行时它只是临时的,添加额外的堆栈空间不会影响性能。 –