exit(EXIT_FAILURE):相当于 Tcl API

问题描述 投票:0回答:1

我有这个功能:

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)

c tcl
1个回答
0
投票

我使用 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.