3

我有与以下类似的代码:

int main()
{
    'some
     code'
     motors();
}

int motors()
{
     if (condition)
     {
          'some
           code'
           main();
     }
     else if (condition)
     {
          'some
           code'
           main();
     }
     else
     {
           main();
     }
}

我能做些什么来防止一遍又一遍地调用 main ?我可以用 main 的代码制作另一个函数吗?

4

2 回答 2

5

调用main是 C++ 中未定义的行为。您可以将最初的所有函数包装main到另一个函数中。

int main()
{
    wrapper();
}

void wrapper()
{
    //code originally in main
}

每当您需要调用时main,请改为调用此包装器。

int motors()
{
     if (condition)
     {
         wrapper();
     }
于 2013-11-10T14:57:19.947 回答
2

有一个避免递归调用函数的简单方法:不要这样做!事实上,很少需要main从程序内部调用,我认为通常应该不惜一切代价避免它(除了IOCCC中使用的“聪明的黑客” )。

相反,您应该使用循环:

int main()
{
    for (;;)
    {
        some_code_that_calls_motors();
    }
}

然后从函数和调用调用链中返回,直到您返回main并重新开始循环。

于 2013-11-10T14:59:50.857 回答