使用常量是否可以节省内存

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位?我弄错了吗?

Joh*_*nck 5

即使在调试版本中,老派程序员节省资源的一种方法是使用枚举:

enum {
    _titleHeight = 30,
    _leftOffset = 22,
    _charHeight = 15
};
Run Code Online (Sandbox Code Playgroud)

现在这些值肯定没有使用内存.但是,优化编译器应与您的const int值达到相同的最终结果.

唯一可以确定的方法是尝试并测量.