[应用相关] 单片机的函数嵌套最多能支持多少层?

[复制链接]
2092|19
 楼主| 小明的同学 发表于 2024-8-31 12:02 | 显示全部楼层 |阅读模式
如果写函数,调用层次太深,会不会有问题?一般允许嵌套多少层函数?
gejigeji521 发表于 2024-8-31 12:13 | 显示全部楼层
9级以内吧。以前上学时候学的说是9级以内,不然堆栈不够
无法去污粉 发表于 2024-8-31 21:32 | 显示全部楼层
每个函数调用都会消耗栈空间,包括函数的局部变量、返回地址等。单片机的栈大小通常有限,因此函数的嵌套层数受到栈空间大小的限制。
无法去污粉 发表于 2024-8-31 21:42 | 显示全部楼层
编译器生成的代码会影响栈的使用情况和函数调用的深度。
失物招領 发表于 2024-9-26 08:11 | 显示全部楼层
这个倒是没遇到过,但是一般不会超过三层的
flycamelaaa 发表于 2024-9-26 09:54 | 显示全部楼层
没有一个绝对的上限
她已醉 发表于 2024-9-26 11:00 | 显示全部楼层
其实嵌套多了,容易出现阅读和理解麻烦的情况
将爱藏于深海 发表于 2024-9-26 13:00 | 显示全部楼层
函数调用层次太深可能会导致栈溢出,每次函数调用都会在栈上分配一定的空间用于存储局部变量、参数和返回地址等信息。如果函数调用层次太深,栈空间可能会被耗尽,导致栈溢出(Stack Overflow)错误。
春日负喧 发表于 2024-9-26 15:00 | 显示全部楼层
函数调用本身有一定的开销,包括保存和恢复寄存器、跳转等操作。如果调用层次太深,这些开销会累积,导致性能下降。
温室雏菊 发表于 2024-9-26 19:00 | 显示全部楼层
一般来说,函数调用层次太深会使代码变得难以理解和维护。跟踪和调试嵌套很深的函数调用会变得非常困难。
白马过平川 发表于 2024-9-26 21:00 | 显示全部楼层
至于一般允许嵌套多少层函数,这并没有一个固定的标准,因为它取决于多个因素:比如编程语言:不同的编程语言对栈空间的管理和分配方式不同。例如,C语言通常有较大的默认栈空间,而某些嵌入式系统或脚本语言可能栈空间较小。
风凉 发表于 2024-9-26 23:00 | 显示全部楼层
不同的编译器和运行时环境对栈空间的管理和优化方式也不同。
故意相遇 发表于 2024-9-27 02:00 | 显示全部楼层
不同的硬件平台(如PC、嵌入式设备)的内存和栈空间大小也不同。
西洲 发表于 2024-9-27 06:00 | 显示全部楼层
函数的局部变量、参数数量和复杂度也会影响栈空间的使用。
捧一束彼岸花 发表于 2024-9-27 08:00 | 显示全部楼层
在实际开发中,为了避免栈溢出和提高代码的可读性和维护性,通常建议:限制函数调用层次:尽量避免过深的函数调用层次。一般来说,几十层的嵌套调用是比较安全的,但具体数量需要根据实际情况评估。
610u 发表于 2024-9-29 22:23 来自手机 | 显示全部楼层
一般允许嵌套8层函数
csv7k1 发表于 2024-9-29 22:32 来自手机 | 显示全部楼层
调用层次太深,不会有问题
在水一方00 发表于 2024-9-30 23:56 来自手机 | 显示全部楼层
一般允许嵌套多少层函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1640

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部