The goto-less goto!
For Cbool bFailed = true;// foreverfor(;;) { // do something here. if(condition1) { // exit the loop (goto) break; } // do something here. // .... // In case you want to goto to the top instead of exit. if(condition2) { // jump to top of the...
For C
bool bFailed = true; // forever for(;;) { // do something here. if(condition1) { // exit the loop (goto) break; } // do something here. // .... // In case you want to goto to the top instead of exit. if(condition2) { // jump to top of the loop. (goto) continue; } // Success. bFailed = false; // This break is necessary to avoid an infinite loop. break; } // forever if(bFailed) { // do your error cleanup here. } // do your unconditional cleanup here.For C++
bool bFailed = true; // In case of an exception. try { // forever for(;;) { // do something here. if(condition1) { // exit the loop (goto) break; } // do something here. // .... // In case you want to goto to the top instead of exit. if(condition2) { // jump to top of the loop. (goto) continue; } // Success. bFailed = false; // This break is necessary to avoid an infinite loop. break; } // forever } catch(...) { // this assumes you want to catch all. } if(bFailed) { // do your error cleanup here. } // do your unconditional cleanup here.