gpt4 book ai didi

c - Arduino 是否支持尾调用消除?

转载 作者:太空狗 更新时间:2023-10-29 15:41:07 25 4
gpt4 key购买 nike

我想知道标准的 Arduino 环境是否支持尾调用消除...有人知道吗?

最佳答案

Arduino IDE 确实支持并默认启用尾调用消除。这对于微 Controller 世界来说是相当标准的,在微 Controller 世界中,为了内存效率而牺牲了适当堆栈帧等调试辅助工具。

这是一个测试:

const int RAM_SIZE_IN_BYTES = 2048;

void f(int i) {
Serial.println(i);
if(i == 0) return;
else f(i-1);
}

void setup() {
Serial.begin(9600);
f(RAM_SIZE_IN_BYTES);
}

void loop() {
}

此代码使用递归函数将 2048 到 0 之间的数字打印到控制台,这(没有尾调用优化)需要比可用 RAM 字节更多的嵌套调用。

关于c - Arduino 是否支持尾调用消除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com