the*_*e_e 5 c embedded memory-management
我正在研究嵌入式系统,所以内存对我来说很宝贵.
一个经常出现的问题是,在尝试为它编译程序时,我的内存空间已经用完了.这通常通过限制可能占用大量空间的typedef等的数量来解决.
有一个宏生成器,我用它来创建一个包含很多#define的文件.其中一些是简单的值,另一些是边界检查
即
#define SIGNAL1 (float)0.03f
#define SIGNAL1_ISVALID(value) ((value >= 0.0f) && (value <= 10.0f))
Run Code Online (Sandbox Code Playgroud)
现在,我没有使用所有这些定义.我使用了一些,但实际上并不是大多数.我被告知,如果不使用它们,它们实际上并没有占用任何记忆,但我不确定这一点.我希望通过删除未使用的那些我可以释放一些额外的内存(但同样,我被告知这是毫无意义的).
未使用的#define会占用任何内存空间吗?
Ana*_*tts 20
不,除非使用#defines,否则#defines不会占用空间 - #define类似于find/replace; 只要编译器看到左半部分,它就会在实际编译之前用右半部分替换它.
所以,如果你有:
float f = SIGNAL1;
Run Code Online (Sandbox Code Playgroud)
编译器将逐字解释该语句:
float f = (float)0.03f;
Run Code Online (Sandbox Code Playgroud)
它永远不会看到SIGNAL1,它不会出现在调试器等中.