Click here to Skip to main content
15,879,474 members
Articles / Programming Languages / C#
Alternative
Tip/Trick

The goto-less goto!

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
31 Jan 2011CPOL 4.4K   2  
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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
-- There are no messages in this forum --