【问题标题】:C++ functions problemC++函数问题
【发布时间】:2011-04-24 22:19:42
【问题描述】:

有没有办法让函数相互调用,即

void menu()
{
some code here
play();
...
}

int play()
{
...
menu();
...
return 0;
}

【问题讨论】:

  • 你试过了吗?它不适合你吗?
  • 是的,我做到了,但没有成功。我是我认识的新手:D

标签: c++ function


【解决方案1】:

在代码文件的顶部添加第二个函数的声明:

int play();

void menu()
{
   // some code here
   play();
   // ...
}

int play()
{
   // ...
   menu();
   // ...
   return 0;
}

这称为forward declaration,它通知编译器稍后将声明一个标识符。
这是一种表示函数的方式,以便您可以在提供完整定义之前调用它。

【讨论】:

  • 从技术上讲这是一个很好的答案,但实际上它会导致堆栈溢出。
  • 对。您必须确保函数内部有一些逻辑可以防止它们无限地相互调用。这会产生无限循环和堆栈溢出错误。这可以像保护原因一样简单,使用if 语句实现。有关递归函数调用的更多信息,请访问here, in a question that was just asked
【解决方案2】:

是的,但这几乎不是您想要做的,因为粗心的使用会破坏堆栈。

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 2011-01-10
    • 2010-10-28
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多