OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3237|回复: 4

关于原子在FSMC讲的LCD屏章节里面很多地方的空间换时间的问题!

[复制链接]

39

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2296
金钱
2296
注册时间
2015-5-6
在线时间
249 小时
发表于 2015-8-19 22:10:25 | 显示全部楼层 |阅读模式
5金钱
我看了原子的视频,LCD屏里面很多地方说操作屏的参数,用空间换时间,但我只看到里面是一些宏的定义,但是宏的定义是在预处理的时候就替换了,并不能节省程序的空间啊,而且也不会节省时间啊,谁知道的的能讲一下吗?

最佳答案

查看完整内容[请看2#楼]

函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查选项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,CPU也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要一些CPU时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2015-8-19 22:10:26 | 显示全部楼层
函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查选项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,CPU也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要一些CPU时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空间,在频繁调用同一个宏函数的时候,该现象尤其突出。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-8-20 00:25:29 | 显示全部楼层
回复【2楼】BMN李:
---------------------------------
解释得很清晰透彻,佩服
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

39

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2296
金钱
2296
注册时间
2015-5-6
在线时间
249 小时
 楼主| 发表于 2015-8-20 18:54:34 | 显示全部楼层
[1楼] BMN李 

非常感谢!
回复

使用道具 举报

2

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2015-5-24
在线时间
9 小时
发表于 2016-1-27 11:07:10 | 显示全部楼层
BMN李 发表于 2015-8-19 22:10
函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用 ...

很形象啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 11:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表