首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C库中的错误报告

C库中的错误报告
EN

Stack Overflow用户
提问于 2011-07-01 21:42:18
回答 5查看 2.9K关注 0票数 21

我正在寻找一种健壮的方式来报告C库中的错误。考虑一个简单的队列示例:

代码语言:javascript
复制
struct queue *q = malloc(sizeof(*q));
if (NULL == q) {
    /* malloc failed. now what ? */
    return NULL; /* maybe ? */
}

好的,对于这个例子,返回NULL是无效的,所以返回它来表示一个错误是有意义的。但

代码语言:javascript
复制
void *get_data()
{
    /* stuff */

    /* Error detected. NULL is a valid return, now what ? */

    /* stuff */
}

更重要的是,一旦我们发出错误信号,如何发出错误信号?我已经考虑过了,但没有一个令人满意的解决方案。

使用errno或其他全局对象的

  • 不是我想要做的事情(也许函数可以从多个线程调用,等等)。
  • 我想让客户端提供一些可以在调用后检查的“状态”对象,但这会使errno相当难看。

那么你对这个主题有什么看法?如何以干净的方式报告错误?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6548749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档