找回密码
 立即注册
查看: 517|回复: 5

函数嵌套的问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-07-03 10:59:08
已绑定手机

43

主题

320

回帖

1053

积分

金牌会员

积分
1053
发表于 2024-7-13 06:38:57 来自手机 | 显示全部楼层 |阅读模式
C51函数嵌套调用多了为什么就运行不了了啊
void drawpoint(page *p,int x,int y,int op);
void showchar(page *p,int x,int y,char c,char op);
void showstr(page *p,int x,int y,char c[],char op);
有这三个函数,下面的一个会调用上面的那个,
比如调用showstr,  page *p从showstr传入,也会依次给到下面的showchar和drawpoint,
这么嵌套2层就运行不了了。

但改为嵌套一层就可以,是怎么回事啊
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-07-03 10:59:08
已绑定手机

43

主题

320

回帖

1053

积分

金牌会员

积分
1053
发表于 2024-7-13 06:40:37 来自手机 | 显示全部楼层
结构体page里又有一个uchar* pbuffer
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5499

积分

荣誉版主

积分
5499
发表于 2024-7-13 07:57:18 | 显示全部楼层
c51函数, 默认都是 不可重入函数, 过多的指针类嵌套调用, 易陷入内存重复使用(内存冲突), 死机很正常.

除非把每一个函数重新定义为可重入函数.
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:374
  • 最近打卡:2025-07-02 00:12:26
已绑定手机

21

主题

488

回帖

931

积分

高级会员

积分
931
发表于 2024-7-13 08:12:13 | 显示全部楼层
学习巩固一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-07-04 09:55:43
已绑定手机

29

主题

350

回帖

2065

积分

金牌会员

机长

积分
2065
发表于 2024-7-13 10:42:04 | 显示全部楼层
猜测大概率是“可重入”的问题。去了解一下reentrant吧
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-07-03 10:59:08
已绑定手机

43

主题

320

回帖

1053

积分

金牌会员

积分
1053
发表于 2024-7-13 12:00:15 来自手机 | 显示全部楼层
已解决!真的是reentrant的问题。以前一直以为只有递归,中断里调函数时候才要可重入,原来多层嵌套也要,可算学习了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-4 17:16 , Processed in 0.129096 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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