打印

关于keil 51单片机 递归函数!!

[复制链接]
9142|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
就是 用的 个 递归 函数!!
例如
a()
{.....
c=b();
......
}
b()
{
..........
if(...)d=a();
.........
}
a调用 b  b中 加以 判断 看是否 调用 a

keil 就警告!!*** WARNING L13: RECURSIVE CALL TO SEGMENT

难道 用不了 递归!?
能消除这个警告吗!? 我small compact large 都试了 就是消除不了 警告!!
高手 指点!!!

相关帖子

沙发
ayb_ice| | 2012-6-8 09:23 | 只看该作者
int calc (char i, int b) reentrant  {
  ....
}
还要初始化重入堆栈

使用特权

评论回复
板凳
happy_snail|  楼主 | 2012-6-8 09:35 | 只看该作者
2# ayb_ice
还是 不行!! 还是警告!!!

使用特权

评论回复
地板
ayb_ice| | 2012-6-8 09:43 | 只看该作者
RT:

未命名.JPG (41.24 KB )

未命名.JPG

使用特权

评论回复
5
ayb_ice| | 2012-6-8 09:45 | 只看该作者
RT:

未命名.JPG (43.98 KB )

未命名.JPG

使用特权

评论回复
6
happy_snail|  楼主 | 2012-6-8 10:05 | 只看该作者
5# ayb_ice

使用特权

评论回复
7
happy_snail|  楼主 | 2012-6-8 10:05 | 只看该作者
5# ayb_ice

使用特权

评论回复
8
ayb_ice| | 2012-6-8 10:11 | 只看该作者
递归函数还用静态变量,怎么递归,有没有概念

使用特权

评论回复
9
ayb_ice| | 2012-6-8 10:11 | 只看该作者
居然还用bit变量
仔细看KEIL手册吧

使用特权

评论回复
10
zhf0964| | 2012-6-8 10:14 | 只看该作者
Keil C是不支持递归的。

使用特权

评论回复
11
happy_snail|  楼主 | 2012-6-8 10:15 | 只看该作者
8# ayb_ice
谢谢你 !! 高手!! 我水平不好 多谢 指点!! 谢谢!!

使用特权

评论回复
12
happy_snail|  楼主 | 2012-6-8 10:16 | 只看该作者
10# zhf0964
到底支持不!? 请....

使用特权

评论回复
13
ayb_ice| | 2012-6-8 10:16 | 只看该作者
这些东西,KEIL手册说的很清楚。

使用特权

评论回复
14
yuhunwill| | 2012-6-8 12:22 | 只看该作者
还不懂啊,慢慢来

使用特权

评论回复
15
kangwuwei| | 2012-6-8 13:44 | 只看该作者
为什么要在单片机中用递归呢?

使用特权

评论回复
16
axiulam1977| | 2012-6-8 16:03 | 只看该作者
果然有高手在。。。。。。。。

使用特权

评论回复
17
zhf0964| | 2012-6-8 16:29 | 只看该作者
标准C 所具备的递归特性不被Keil C51 支持,在C51 中,要使用递归特性,必须用reentrant 进行声明才能使用。

使用特权

评论回复
18
rockli| | 2012-6-8 17:49 | 只看该作者
即使支持,也不建议使用。影响整体结构。

使用特权

评论回复
19
highgear| | 2012-6-8 22:45 | 只看该作者
写程序时, 要对系统以及所使用的方法有清晰的认知。

51 的那点资源, 就别指望递归。 递归是可重入的一种, 根据退出条件通常需要大量的自调用并消耗大量的堆栈, Keil 提出警告不是没有原因的。

使用特权

评论回复
20
happy_snail|  楼主 | 2012-6-9 10:43 | 只看该作者
19# highgear
我在 51 上用了!效果还好 !警告也消除了! 但是我也担心这个问题!就怕以后有什么问题 ! 要是那个前辈 大虾 对51 中的递归 有研究 !!总结一下 就好了... 分享一下 看能不能用 !

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

80

帖子

1

粉丝