我有这个功能:
Tcl_Obj* cFuncTcl (Tcl_Interp* interp, Tcl_Obj* obj) {
Tcl_Obj *listObj = Tcl_NewListObj (0,NULL);
const char* var = Tcl_GetString(obj);
if (strcmp(var, "foo")) {
fprintf(stderr, "error\n");
exit(EXIT_FAILURE);
} else {
// Do something
}
return listObj;
}
当我的函数返回一个整数来报告错误时,我使用
return Tcl_ERROR;
,但这里我的函数返回一个 obj
。
我的问题:是否有一个 API C Tcl 相当于 exit(EXIT_FAILURE)?
我使用 return Tcl_ERROR;当我的函数返回一个整数来报告错误时,
通过其返回值报告错误与终止进程的
exit()
不同。不需要 TCL API 来终止进程,这与 exit()
有什么不同?
如果您想从该函数返回并带有错误指示而不是中止,则只需返回 NULL - 返回值是 pointer 或对象,而不是对象本身,因此返回 NULL 是指示失败的惯用方式。
Tcl_Obj* cFuncTcl (Tcl_Interp* interp, Tcl_Obj* obj)
{
Tcl_Obj *listObj = Tcl_NewListObj (0,NULL);
const char* var = Tcl_GetString(obj);
if (strcmp(var, "foo"))
{
fprintf(stderr, "error\n");
return NULL ;
}
else
{
// Do something
}
return listObj;
}