【发布时间】:2022-11-07 17:45:02
【问题描述】:
这是我的对象创建函数的签名:
struct object *object_create();
如果对象创建成功,则返回指向该对象的指针,否则返回0。
如何从同一个函数返回一些错误代码?
我想混合错误代码和对象指针不是要走的路吗?
【问题讨论】:
-
这里的人经常对全局变量皱眉,但类似的东西(沿着标准
errno变量的行)会起作用。或者您可以为您的函数添加一个参数 -int* errorcode。
标签: c
这是我的对象创建函数的签名:
struct object *object_create();
如果对象创建成功,则返回指向该对象的指针,否则返回0。
如何从同一个函数返回一些错误代码?
我想混合错误代码和对象指针不是要走的路吗?
【问题讨论】:
errno 变量的行)会起作用。或者您可以为您的函数添加一个参数 - int* errorcode。
标签: c
您有多种选择:
errno。int object_create(struct object **ret);struct object *object_create(int *err);
errno 等效项(需要注意使线程安全地工作,即您可能需要一个线程局部变量)。struct object 本身或一些包装器。此选项在 C 中并不常见,因为它最适用于泛型类型(例如 C++,您可以在其中创建泛型 Result<T, Err> 类型)。
【讨论】: