添加try catch 原理注释

This commit is contained in:
2025-06-25 19:10:40 +08:00
parent 2cfdb4a84f
commit 5411714133
5 changed files with 49 additions and 18 deletions

View File

@@ -67,7 +67,7 @@ const keywork_item_def g_keyword_table[ ] = {
TOKEN_DEF(continue,TOKEN_CONTINUE),
TOKEN_DEF(const,TOKEN_CONST),
TOKEN_DEF(static,TOKEN_STATIC),
TOKEN_DEF(unisgned,TOKEN_UNSIGNED),
TOKEN_DEF(unsigned,TOKEN_UNSIGNED),
TOKEN_DEF(typedef,TOKEN_TYPEDEF),
TOKEN_DEF(struct,TOKEN_STRUCT),
TOKEN_DEF(enum,TOKEN_ENUM),

View File

@@ -66,13 +66,16 @@ typedef struct{
}\
}
/*
try 的时候保存当前回溯点如果setjmp返回不为0 则已经产生异常回溯了,
这时最后一个回溯点的使命已经完成,所以删除最后一个回溯点
*/
#define __try(){\
exception_def *f=exception();\
jmp_fram **h=&f->jmp_head;\
int ret;\
jmp_next(h);\
ret= setjmp(((*h)->fram));\
ret = setjmp(((*h)->fram));\
if(ret){\
jmp_clear(h);\
}\
@@ -80,6 +83,11 @@ typedef struct{
}
#define try_ __try();if(exception()->ret==0){
/*
如果try一直执行到这里则不会产生回溯了最后一个回溯点的使命也已经完成了
所以这里删除最后一个回溯点
*/
#define catch_ {\
exception_def *f=exception();\
jmp_fram **h=&f->jmp_head;\