_奶咖君_
发表于 2023-12-27 09:56:55
zhangzhonghua 发表于 2023-12-27 09:49
高手,确实不是函数名调用,而是用函数指针调用。
*g_pFunc = func2; // 函数指针指向func2()
那我就说中了!
原则上的解决办法是 自己维护调用树,,,
取巧的办法是 直接关闭OVERLAY的功能,,至于上面小伙伴说的优化等级啊 什么volatile,什么static治标不治本。
怎么维护 可以百度一下,我这里说太麻烦了。
怎么关闭 我给你截个图
_奶咖君_
发表于 2023-12-27 09:58:37
zhangzhonghua
发表于 2023-12-27 10:01:35
_奶咖君_ 发表于 2023-12-27 09:58
维护调用树太麻烦了吧?我还是看看Overlay,看看不用Overlay我的内存够不够用。
_奶咖君_
发表于 2023-12-27 10:01:56
emmmm 这中做法会导致 内存占用增大,,,毕竟是给所有的局部变量都分配了地址,,,然后如果用了LX51链接器,,其中的 REMOVEUNUSED 功能失效,好像这个功能也是用了利用调用树实现的。
所以 ,,最最根本的是调用树,,无论如何 ,用或者不用,请查一下相关知识
_奶咖君_
发表于 2023-12-27 10:03:22
本帖最后由 _奶咖君_ 于 2023-12-27 10:22 编辑
zhangzhonghua 发表于 2023-12-27 10:01
维护调用树太麻烦了吧?我还是看看Overlay,看看不用Overlay我的内存够不够用。 ...
你说的没错,,,所以我偷懒了{:4_167:}
但是还是建议您会维护,咱们可以不用,但是得会
zxcv1973
发表于 2023-12-27 10:30:37
zhangzhonghua 发表于 2023-12-27 09:49
高手,确实不是函数名调用,而是用函数指针调用。
*g_pFunc = func2; // 函数指针指向func2()
都改成可重入函数就行了
zhangzhonghua
发表于 2023-12-27 11:11:36
加了NOOVERLAY,居然有链接错误,说无效的命令行语法。这怎么回事?
zhangzhonghua
发表于 2023-12-27 11:14:48
_奶咖君_ 发表于 2023-12-27 10:01
emmmm 这中做法会导致 内存占用增大,,,毕竟是给所有的局部变量都分配了地址,,,然后如果用了LX51链接 ...
我就是LX51链接器,还用了REMOVEUNUSED,现在加上NOOVERLAY就出错了。
_奶咖君_
发表于 2023-12-27 11:16:17
zhangzhonghua 发表于 2023-12-27 11:14
我就是LX51链接器,还用了REMOVEUNUSED,现在加上NOOVERLAY就出错了。
发个截图?是不是逗号用成中文了
zhangzhonghua
发表于 2023-12-27 11:19:55
zxcv1973 发表于 2023-12-27 10:30
都改成可重入函数就行了
怎么改成可重入函数?
页:
1
[2]
3
4
5
6
7
8
9
10