小编Ach*_*raf的帖子

如何释放C中的调用堆栈?

我创建了一个使用 RDP(递归下降解析器)的计算器来解析和评估数学表达式“例如:5 cos(30) -5 (3+5)”。问题是我还尝试包含像“config”这样的命令,它可以让用户配置角度单位(Gra、Rad、Deg)。而这里我发现了代码设计的问题。

调用堆栈的简化示例:

int main()
{
   parseexpr()
    {
       parseterm()
       {
          parsefactor()
          {
              parsecommand() or parsefct() or parsenumber();
          }

       }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在当用户输入“config”命令时。我想让他配置计算器(配置位于 .txt 文件内),然后跳回“main()”(他会被要求再次输入表达式),因为通过调用返回会出现问题堆栈,因为我需要一个返回值,而“parsecommand()”无法返回。

我的问题是如何清理调用堆栈,以便我可以通过“goto”语句直接返回到 main ?

c stack callstack goto setjmp

1
推荐指数
1
解决办法
148
查看次数

标签 统计

c ×1

callstack ×1

goto ×1

setjmp ×1

stack ×1