gpt4 book ai didi

c - 防止坏的和需要的递归

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:51 25 4
gpt4 key购买 nike

我这里有问题:

void DrawState(){
char statevar[1000] = {0};
//bla bla bla
something = showmenu(); // or showscreen() or showinput()
if(something){
// change state
state = new_state;
}else{
// return to previous state
state = return_state;
}
// draw new state here.
DrawState();
}

我需要这个函数在状态改变时运行。但是当我递归地这样写时,它会消耗太多内存并最终导致系统崩溃。当我不这样做时,我不知道如何从外部调用自己。

有人知道吗?

编辑:这是一个运行在管理器软件之上的库,就像一个插件。后台作业也需要与此实现一起工作。也许我应该在某些事件中运行它。

最佳答案

听起来您想要的东西本身不涉及递归,而只是一个回调。

当您需要在代码中的某些内容发生变化时运行某些代码时,您希望实现 Observer pattern .一个简单的 C 实现可能会使用函数指针来保存将在更新监视的数据时运行的函数。

例如,您可以将更新功能分开:

void DrawState() {
// ...
}

然后,您可以维护一个指向它的指针

int (*updateDraw)() = DrawState

然后做...

if (updated) {
// when updated
updateDraw()
}

关于c - 防止坏的和需要的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906118/

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