我使用return Tcl_Error;当函数返回一个整数来报告错误时,
通过返回值报告错误与终止进程的exit()
不同.不需要TclAPI来终止进程,这与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;
}
是否有一个API C Tcl等价于exit(EXIT_FAILURE)?
API是fully documented,其中有process termination API,其中包括Tcl_Exit()
,但不清楚在本例中您实际需要的是什么.您似乎将进程终止与返回错误状态的函数混为一谈.尽管如此,我还是:
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");
Tcl_Exit( Tcl_ERROR ) ;
}
else
{
// Do something
}
return listObj;
}