質問: 1); ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: ``` void Test1() { do { ... } while( b == INT_MAX ); ... } ``` 都度Test1()から抜けたいなら,どこかに情報を覚えておいて,Test1()を呼び出す側で分岐するとかで. ``` //情報 struct Context { int B; void (*pNextWork)( Context* ); }; // void Test2( Context *pC ) { std::cout << "Test2" << std::endl; pC->pNextWork = nullptr; } // void Test1( Context *pC ) { std::cout << "Test1" << std::endl; if( !(rand() % 5) ){ pC->B = 0; } //※(仮)いつか終わるように if( pC->B == INT_MAX ) { pC->pNextWork = Test1; return; } pC->pNextWork = Test2; } // int main(void) { Context Ctxt; Ctxt.B = INT_MAX; Ctxt.pNextWork = Test1; while( Ctxt.pNextWork ) { Ctxt.pNextWork( &Ctxt ); } return 0; } ```