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

[复制链接]
 楼主| happy_snail 发表于 2012-6-8 09:05 | 显示全部楼层 |阅读模式
就是 用的 个 递归 函数!!
例如
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:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2012-6-8 09:45 | 显示全部楼层
RT:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| happy_snail 发表于 2012-6-8 10:05 | 显示全部楼层
5# ayb_ice

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| happy_snail 发表于 2012-6-8 10:05 | 显示全部楼层
5# ayb_ice

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2012-6-8 10:11 | 显示全部楼层
递归函数还用静态变量,怎么递归,有没有概念
ayb_ice 发表于 2012-6-8 10:11 | 显示全部楼层
居然还用bit变量
仔细看KEIL手册吧
zhf0964 发表于 2012-6-8 10:14 | 显示全部楼层
Keil C是不支持递归的。
 楼主| happy_snail 发表于 2012-6-8 10:15 | 显示全部楼层
8# ayb_ice
谢谢你 !! 高手!! 我水平不好 多谢 指点!! 谢谢!!
 楼主| happy_snail 发表于 2012-6-8 10:16 | 显示全部楼层
10# zhf0964
到底支持不!? 请....
ayb_ice 发表于 2012-6-8 10:16 | 显示全部楼层
这些东西,KEIL手册说的很清楚。
yuhunwill 发表于 2012-6-8 12:22 | 显示全部楼层
还不懂啊,慢慢来
kangwuwei 发表于 2012-6-8 13:44 | 显示全部楼层
为什么要在单片机中用递归呢?
axiulam1977 发表于 2012-6-8 16:03 | 显示全部楼层
果然有高手在。。。。。。。。
zhf0964 发表于 2012-6-8 16:29 | 显示全部楼层
标准C 所具备的递归特性不被Keil C51 支持,在C51 中,要使用递归特性,必须用reentrant 进行声明才能使用。
rockli 发表于 2012-6-8 17:49 | 显示全部楼层
即使支持,也不建议使用。影响整体结构。
highgear 发表于 2012-6-8 22:45 | 显示全部楼层
写程序时, 要对系统以及所使用的方法有清晰的认知。

51 的那点资源, 就别指望递归。 递归是可重入的一种, 根据退出条件通常需要大量的自调用并消耗大量的堆栈, Keil 提出警告不是没有原因的。
 楼主| happy_snail 发表于 2012-6-9 10:43 | 显示全部楼层
19# highgear
我在 51 上用了!效果还好 !警告也消除了! 但是我也担心这个问题!就怕以后有什么问题 ! 要是那个前辈 大虾 对51 中的递归 有研究 !!总结一下 就好了... 分享一下 看能不能用 !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

80

帖子

1

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