我在嵌入式系统上工作,所以内存对我来说很宝贵。
一个反复出现的问题是我在尝试为其编译程序时内存空间不足。这通常通过限制可能占用大量空间的 typedef 等的数量来解决。
有一个宏生成器,我用它来创建一个包含很多#define 的文件。 其中一些是简单的值,另一些是边界检查
即
#define SIGNAL1 (float)0.03f
#define SIGNAL1_ISVALID(value) ((value >= 0.0f) && (value <= 10.0f))
现在,我不使用所有这些定义。我使用一些,但实际上不是大多数。 有人告诉我,如果不使用它们,它们实际上不会占用任何内存,但我不确定这一点。我希望通过删除未使用的内存来释放一些额外的内存(但我再次被告知这是毫无意义的)。
未使用的#define 是否占用任何内存空间?
最佳答案
不,#defines 不占用空间,除非它们被使用——#defines 像查找/替换一样工作;每当编译器看到左半部分时,它就会在实际编译之前用右半部分替换它。
所以,如果你有:
float f = SIGNAL1;
编译器将逐字解释语句:
float f = (float)0.03f;
它永远不会看到 SIGNAL1,它不会出现在调试器中,等等。
关于C 内存空间和#defines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345541/