Erik Andersen wrote:

> > Does any body how to use long jump in c/c++, I have a
> > program that parse a hierachy structured bitstream, its
> > call nested very deep, so I want to get back to the main
> > instead of check error in each of the nested function and
> > return one by one.
> 
> Something like this:
> 
>     #include <stdio.h>
>     #include <setjmp.h>
> 
>     jmp_buf errorhandler;
>     #define FAIL(why)       fprintf(stderr, why); longjmp(errorhandler, 1)

Ouch. If someone decides to write:

        if (...)
          FAIL(...);

the result won't be what they expect, and the bug could be fairly hard
to find. The usual solution is to use something like:

#define FAIL(why)  do {fprintf(stderr, why); longjmp(errorhandler, 1);} while (0)

which is a single statement, and so doesn't have this problem.

-- 
Glynn Clements <[EMAIL PROTECTED]>

-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]

Reply via email to