clo*_*0rk 2 c++ memory constants arduino
我目前正在重构一个我为大学项目写的课程.
这个类把东西放到连接到Arduino Nano的TFT显示器上,我想我不需要解释为什么微处理器上的内存很少见,特别是在Arduino Nanos上....
该类在屏幕上绘制GUI,在重构之前,我曾经为绘制相关的所有内容设置幻数,例如屏幕边缘的偏移量.
我能够重构这种东西
//constants for screen offsets
const int PROGMEM _titleHeight = 30;
const int PROGMEM _leftOffset = 22;
const int PROGMEM _charHeight = 15;
... more stuff here, you get the point
Run Code Online (Sandbox Code Playgroud)
然后我想知道"这真的能省下任何记忆吗?"
我的意思是,最后我使用3个整数单元来实现相同的目标,这是96位"浪费"的空间.
除了它更容易阅读并且无论如何我将这些值填充到PROGMEM中,
使用常量一般会在优化方面节省任何空间吗?
编辑:如果这些值短路,它们的指针不是32位,因此浪费16位?我弄错了吗?
即使在调试版本中,老派程序员节省资源的一种方法是使用枚举:
enum {
_titleHeight = 30,
_leftOffset = 22,
_charHeight = 15
};
Run Code Online (Sandbox Code Playgroud)
现在这些值肯定没有使用内存.但是,优化编译器应与您的const int值达到相同的最终结果.
唯一可以确定的方法是尝试并测量.