C 内存空间和#defines

标签 c embedded memory-management

我在嵌入式系统上工作,所以内存对我来说很宝贵。

一个反复出现的问题是我在尝试为其编译程序时内存空间不足。这通常通过限制可能占用大量空间的 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/

相关文章:

python - C代码转换为python

c++ - 如何将编译时元数据/行为添加到特定函数

python - 限制 Tensorflow CPU 和内存使用

c - 如何在主函数中存储函数的返回值。 C语言编程

c - 随机运行中的段错误

c - 为什么我们在 C 中有多个 main 声明?

android - 识别android中的DTMF音调

assembly - 为 X86 编译时如何防止函数对齐到 16 字节边界?

android - 使用位图和 Volley 查看寻呼机内存泄漏

c - 我最喜欢的段错误!!为什么?