打印
[应用相关]

单片机的函数嵌套最多能支持多少层?

[复制链接]
623|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小明的同学|  楼主 | 2024-8-31 12:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果写函数,调用层次太深,会不会有问题?一般允许嵌套多少层函数?

使用特权

评论回复
沙发
gejigeji521| | 2024-8-31 12:13 | 只看该作者
9级以内吧。以前上学时候学的说是9级以内,不然堆栈不够

使用特权

评论回复
板凳
无法去污粉| | 2024-8-31 21:32 | 只看该作者
每个函数调用都会消耗栈空间,包括函数的局部变量、返回地址等。单片机的栈大小通常有限,因此函数的嵌套层数受到栈空间大小的限制。

使用特权

评论回复
地板
无法去污粉| | 2024-8-31 21:42 | 只看该作者
编译器生成的代码会影响栈的使用情况和函数调用的深度。

使用特权

评论回复
5
失物招領| | 2024-9-26 08:11 | 只看该作者
这个倒是没遇到过,但是一般不会超过三层的

使用特权

评论回复
6
flycamelaaa| | 2024-9-26 09:54 | 只看该作者
没有一个绝对的上限

使用特权

评论回复
7
她已醉| | 2024-9-26 11:00 | 只看该作者
其实嵌套多了,容易出现阅读和理解麻烦的情况

使用特权

评论回复
8
将爱藏于深海| | 2024-9-26 13:00 | 只看该作者
函数调用层次太深可能会导致栈溢出,每次函数调用都会在栈上分配一定的空间用于存储局部变量、参数和返回地址等信息。如果函数调用层次太深,栈空间可能会被耗尽,导致栈溢出(Stack Overflow)错误。

使用特权

评论回复
9
春日负喧| | 2024-9-26 15:00 | 只看该作者
函数调用本身有一定的开销,包括保存和恢复寄存器、跳转等操作。如果调用层次太深,这些开销会累积,导致性能下降。

使用特权

评论回复
10
温室雏菊| | 2024-9-26 19:00 | 只看该作者
一般来说,函数调用层次太深会使代码变得难以理解和维护。跟踪和调试嵌套很深的函数调用会变得非常困难。

使用特权

评论回复
11
白马过平川| | 2024-9-26 21:00 | 只看该作者
至于一般允许嵌套多少层函数,这并没有一个固定的标准,因为它取决于多个因素:比如编程语言:不同的编程语言对栈空间的管理和分配方式不同。例如,C语言通常有较大的默认栈空间,而某些嵌入式系统或脚本语言可能栈空间较小。

使用特权

评论回复
12
风凉| | 2024-9-26 23:00 | 只看该作者
不同的编译器和运行时环境对栈空间的管理和优化方式也不同。

使用特权

评论回复
13
故意相遇| | 2024-9-27 02:00 | 只看该作者
不同的硬件平台(如PC、嵌入式设备)的内存和栈空间大小也不同。

使用特权

评论回复
14
西洲| | 2024-9-27 06:00 | 只看该作者
函数的局部变量、参数数量和复杂度也会影响栈空间的使用。

使用特权

评论回复
15
捧一束彼岸花| | 2024-9-27 08:00 | 只看该作者
在实际开发中,为了避免栈溢出和提高代码的可读性和维护性,通常建议:限制函数调用层次:尽量避免过深的函数调用层次。一般来说,几十层的嵌套调用是比较安全的,但具体数量需要根据实际情况评估。

使用特权

评论回复
16
610u| | 2024-9-29 22:23 | 只看该作者
一般允许嵌套8层函数

使用特权

评论回复
17
csv7k1| | 2024-9-29 22:32 | 只看该作者
调用层次太深,不会有问题

使用特权

评论回复
18
在水一方00| | 2024-9-30 23:56 | 只看该作者
一般允许嵌套多少层函数

使用特权

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

本版积分规则

137

主题

1430

帖子

2

粉丝