gpt4 book ai didi

c - c : different approaches 中的库错误管理

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:53 25 4
gpt4 key购买 nike

这是我第一次开发足够严肃的东西,所以我必须管理错误。我想到了三种可以使用的方法:

COMDS_RETURN some_function(....)

这种方法的问题是,有时更容易返回指向“数据”的指针,例如指向链表的指针,但如果函数失败,我无法知道它失败的原因。

我的第二种方法是始终附加一个“错误”参数:

pointer_to_data *some_function(...., error *myerror)

但在这里我总是会在每个函数中添加额外参数的开销,并且对于某些返回错误的函数,它比第一种方法更好。

好吧,第三种方法是混合使用第一种方法,但这里的问题还是在于库没有统一的调用/错误检查模型。对于一个功能,您必须以第一种方式执行,对于另一个功能,您必须以第二种方式执行。

我想知道这三种方法(或现有的另一种方法)之间最好的方法是什么。

最佳答案

请注意,没有“最佳”方式;这取决于您的用例,每种方法都有其优缺点。

例如,COM 对象通常返回一个 HRESULT 状态值。如果他们需要将数据返回给用户,他们会添加一个额外的参数作为指向要写入的数据的指针。这样做的好处是能够在通话中检查状态,即

if (FAILED(d3dDevice->CreateBuffer(...)) {
// handle failure...
}

C 库中的许多函数都有一个特殊的返回值来指示失败。然后,用户可以引用 errno 以获得有关错误的更多信息。这样做的好处是不必事先声明数据变量并将它们作为额外参数传递。

关于c - c : different approaches 中的库错误管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com