2011-04-24 31 views
0

是有办法的功能打电话给对方即C++函数问题

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

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

你试过了吗?它不适合你吗? – 2011-04-24 14:09:52

+0

是的,我做了,但没有奏效。我是一个新手,我知道:D – Martin 2011-04-24 14:17:30

回答

3

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

int play(); 

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

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

这就是所谓的forward declaration,并通知标识符将在稍后宣布的编译器。
这是一种表示函数的方法,以便您在提供完整定义之前可以调用它。

+1

从技术上讲,这是一个很好的答案,但实际上它会导致堆栈溢出。 – 2011-04-24 14:35:30

+0

对。你必须确保函数内部有一些逻辑阻止他们无限地调用对方。这会产生无限循环和堆栈溢出错误。这可以像使用“if”语句实现的警卫原因一样简单。有关递归函数调用的更多信息可用[在这里,刚刚被问到的问题](http://stackoverflow.com/questions/5770597/recursive-loop-c)。 – 2011-04-24 14:52:47

1

是的,但是这是几乎从来没有你想,因为不小心使用将打破栈做什么。