【发布时间】:2011-04-11 22:48:51
【问题描述】:
对于我的系统编程课,我们使用 C 进行了大量编程,并且由于我们目前正在学习使用 pthread 编程,因此需要对大多数功能进行错误检查。
我之所以说这不是真正的家庭作业,是因为它远远超出了这门课的预期。简单地单独检查每个功能就非常令人满意了。我只是觉得这是一种耗时且混乱的方法,并希望有一个更整洁的解决方案。
我想知道是否有人可以告诉我如何编写一个函数,该函数将任何 C 函数作为参数,然后是该函数所需的所有参数,以及所需的返回值(在这种情况下是正确的),并执行以下操作。
if(function_name(param1, param2, ...) != desired_return_value) {
fprintf(stderr, "program_name: function_name() failed\n");
perror("function_name(): ");
}
这可能吗?我们的课程几乎没有要求它,但让我很恼火的是,我编写的几乎所有函数都必须有 4 行代码来进行错误检查。它让人难以阅读。
即使是其他一些建议也会很好。我只是想增加可读性,所以如果这完全是错误的方向,一些正确的方向将不胜感激。
编辑:理想情况下,这应该在 gnu99 标准下编译:P
编辑 2:回应 James McNellis: 我们函数的错误不需要(我相信在这种情况下)需要处理。只需要提供通知。我们没有涉及处理线程/进程相关的错误(简而言之就是这个主题)。
【问题讨论】:
-
嗯,这不是真正的家庭作业,但我不会说你没有说它不是。
-
这些不是您不想要的机器人。
-
根据我的经验,在很多情况下,尤其是在线程代码中,不处理错误肯定会导致早期秃顶、头痛和数小时的深夜调试。问题是在编写违反某些假设的代码和依赖它的代码之间很可能存在很长的延迟时间。
标签: c error-handling macros c-preprocessor variadic-functions