我有以下类似的代码:
int main()
{
'some
code'
motors();
}
int motors()
{
if (condition)
{
'some
code'
main();
}
else if (condition)
{
'some
code'
main();
}
else
{
main();
}
}
我可以做些什么来阻止一遍又一遍地调用main?我可以使用main的代码创建另一个函数吗?
答案 0 :(得分:5)
在C ++中调用main
是未定义的行为。您可以将main
中最初的所有函数包装到另一个函数中。
int main()
{
wrapper();
}
void wrapper()
{
//code originally in main
}
无论何时需要致电main
,请改为调用此包装。
int motors()
{
if (condition)
{
wrapper();
}
答案 1 :(得分:2)
有一种简单的方法可以避免递归调用函数:不要这样做!事实上,很少需要从程序内部调用main
,我认为通常应该不惜一切代价避免(除了the IOCCC中使用的“聪明的黑客”)。
相反,你应该使用循环:
int main()
{
for (;;)
{
some_code_that_calls_motors();
}
}
然后从函数和调用调用链返回,直到你回到main
并重新开始循环。