_NCY_ 发表于 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层就运行不了了。

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

_NCY_ 发表于 2024-7-13 06:40:37

结构体page里又有一个uchar* pbuffer

LAOXU 发表于 2024-7-13 07:57:18

c51函数, 默认都是 不可重入函数, 过多的指针类嵌套调用, 易陷入内存重复使用(内存冲突), 死机很正常.

除非把每一个函数重新定义为可重入函数.

llyymm 发表于 2024-7-13 08:12:13

学习巩固一下

hsrzq 发表于 2024-7-13 10:42:04

猜测大概率是“可重入”的问题。去了解一下reentrant吧

_NCY_ 发表于 2024-7-13 12:00:15

已解决!真的是reentrant的问题。以前一直以为只有递归,中断里调函数时候才要可重入,原来多层嵌套也要,可算学习了
页: [1]
查看完整版本: 函数嵌套的问题