我最近一直在用 C 语言为一个只有 2kB 闪存的微控制器开发一些嵌入式软件。在编程结束时,我一直在达到代码限制。到现在为止,当这种情况发生时,我一直在提高编译器优化的水平,重新测试,然后愉快地继续。但是,我最近达到了优化的极限,并且添加了最后一点功能,再次耗尽了内存。结果,我不得不让 George Foreman 了解我的源代码并消耗一些脂肪。
我在这里和那里减少了一些抽象层,这有点帮助但还不够。接下来我看到的是我有函数原型
void process_event(Event event, void *data);
它将要处理的事件和可用于将附加数据传递给调用的空指针作为其参数。如果我不需要任何额外的数据,我通过NULL
. 这个函数是在开发的早期写的,我意识到我从来没有使用过data
,所以我把它分解了。这一更改为我节省了所需的编译代码大小(~100 字节),我想知道为什么,特别是考虑到我通常NULL
在process_event
被调用时通过?