求大神解释!keil编译,调用子函数越多,RAM占用越少

2019-07-15 18:30发布

如题!keil编译程序的时候,调用子函数越多,RAM占用越少!麻烦大家帮忙看看!源码有点长,而且可读性比较差,所以就不发出来了,几个子程序唯一的关系就是共用3个全局变量,都是用作for循环的,并没有影响,结果如下图: QQ截图20140918235541.png QQ截图20140918235643.png QQ截图20140918235719.png

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ntmusic
1楼-- · 2019-07-15 20:49
首先,你的表述有误,不是调用的子函数越多占用的RAM越少,而是“越少未调用的子函数,占用的RAM越少”。原因很简单,如果你定义了一个子函数但却没有被调用,那么在编译的时候就会被当做相当于中断函数而分配独立的RAM。但如果调用了,Keil会对其进行优化吗,通过整合资源达到减少RAM的目的。你可以把未调用的子函数注释掉再编译看看结果。
woodmice
2楼-- · 2019-07-15 21:00
嗯嗯,楼上说得极是,有些编译器会提醒你有未使用到的代码!
不知道KEIL经过设置会不会有这个提醒
暮汐影子
3楼-- · 2019-07-15 21:39
2楼讲的确实是有道理的。
qq1101539606
4楼-- · 2019-07-16 02:56
ntmusic 发表于 2014-9-19 09:14
首先,你的表述有误,不是调用的子函数越多占用的RAM越少,而是“越少未调用的子函数,占用的RAM越少”。原 ...

谢谢您的回答,但我测试了,结果不是这样的,我在主函数里写两个死循环,第一个死循环放一个子函数,其它的全部放在第二个死循环,这样就调用了所有子函数,实际上只执行了一个,结果和只调用一个子函数的结果是一样的,RAM占用还是很大,这又是怎么回事呢?
ntmusic
5楼-- · 2019-07-16 08:36
 精彩回答 2  元偷偷看……
qq1101539606
6楼-- · 2019-07-16 11:13
ntmusic 发表于 2014-9-23 09:21
Keil对于在主程序中独立的程序(多处死循环)都独立分配资源,但这只是对非常明显的死循环Keil才能识别, ...

非常感谢您的回答,我明白了!

一周热门 更多>