3

次のようなコードがあります。

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

int motors()
{
     if (condition)
     {
          'some
           code'
           main();
     }
     else if (condition)
     {
          'some
           code'
           main();
     }
     else
     {
           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 に答える