And there are some who consider multiple points of exit from a function=20 almost as bad as a goto. After all, a return is nothing more than: void foo(bar) { if(!bar) { goto RETURN_LABEL; } else { // do something with bar } RETURN_LABEL: } On 4/13/2014 7:41 PM, Chris McSweeny wrote: > On Sun, Apr 13, 2014 at 11:29 PM, smplx wrote: > >> Ok, here is a snipet of code that is much cleaner with the GOTO than >> without (BTW it's the only goto in several thousand lines of code >> belonging to the same project). >> > void function parse() > { > p1 =3D parse_identifier(); > > if (p1 =3D=3D NULL) > { > p1 =3D parse_lparen(); > > if (p1 !=3D NULL) > { > ITEM *p2; > > p2 =3D parse_declarator(); > > if (p2 !=3D NULL) > { > ITEM *p3; > > p3 =3D parse_rparen(); > > if (p3 !=3D NULL) > { p1 =3D p2; > return; > } > > push_item(p2); > > p2 =3D NULL; > } > > push_item(p1); > > p1 =3D NULL; > } > } > return; > } > > ;) > > Chris --=20 Joe Wronski jwronski@stillwatereng.net www.stillwatereng.net --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .