我正在用 C 编写一个异常处理库,但遇到了一个问题:
#define TRY do{ jmp_buf ex_buf__; switch( setjmp(ex_buf__) ){ case 0:
#define FINALLY break; } default:
#define CATCH(x) break; case x:
#define ETRY } }while(0)
#define THROW(x) longjmp(ex_buf__, x)
在我当前的 try catch throw 实现中,我将无法从 try 块内部调用的方法内部抛出异常,因为 jmp_buf 变量是本地变量。我怎样才能做到这一点?我考虑了一个全局变量,但这不允许我嵌套 try catch 块。