【问题标题】:Returning error codes from a C function which returns object pointer?从返回对象指针的C函数返回错误代码?
【发布时间】:2022-11-07 17:45:02
【问题描述】:

这是我的对象创建函数的签名:

struct object *object_create();

如果对象创建成功,则返回指向该对象的指针,否则返回0。

如何从同一个函数返回一些错误代码?

我想混合错误代码和对象指针不是要走的路吗?

【问题讨论】:

  • 这里的人经常对全局变量皱眉,但类似的东西(沿着标准errno 变量的行)会起作用。或者您可以为您的函数添加一个参数 - int* errorcode。

标签: c


【解决方案1】:

您有多种选择:

  1. 设置errno。
  2. 将函数签名更改为以下任一:
    1. int object_create(struct object **ret);
    2. struct object *object_create(int *err);
    3. 声明并使用您自己的errno 等效项(需要注意使线程安全地工作,即您可能需要一个线程局部变量)。
    4. 创建一个可以容纳您的对象以及错误代码的结构; struct object 本身或一些包装器。此选项在 C 中并不常见,因为它最适用于泛型类型(例如 C++,您可以在其中创建泛型 Result<T, Err> 类型)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多