目前我返回-1在我的自定义功能在C如果出现不和0成功。例如,正与一个链表和一些功能需要一个非空列表正常工作。如果作为参数传递的列表是空的,我返回-1(错误)和0,如果它不是空的,功能没有问题的工作。

应该I,也许,返回1而不是-1?

这是用C做事的标准方法或者你推荐一种不同的方法?

有帮助吗?

解决方案

返回一个非零值,以指示故障。这样,你可以写你的函数的调用像这样:

if(func_call())
{
    doErrorHandling();
}

此惯例将允许您使用任何!0值,以指示一个特定的错误,而这将允许你以均匀方式使用一个可变的。因此,在上面的例子中所示的if的身体可以然后有一个switch语句来处理特定错误。

您可以采取不同的方式 - 但如果你选择这样做,坚持一个约定 - 在Win32 API(和其他API的我都用过)混合和匹配约定不幸

其他提示

这听起来不错。 -1 I / O功能的使用,因为正回报值通常表示成功,是已处理的字节数。如果你有多种方式的功能可以去错了,那么你就可以返回不同的整数或设置一个全局错误变量(错误使用标准库)包含错误代码。

在风格上,我宁愿不返回状态代码,因为这意味着我的功能不能(干净)返回其他任何东西。相反,我会调用该函数前检查输入。但这是主观的,取决于上下文。

我建议你找到一种方法在误差,所有的信息仍然是可用的点格式化完全翔实可读的字符串的,并设计一种方式来获得下来直通该计划的其余部分,通用户,他的手机,你的开发团队进行分析。

这在我看来,像任何设计的一个重要特征,如果你想更快地生产出更好的软件。杀死在路上的错误信息是一个重大的犯罪,C语言是没有任何借口。

有许多方案 - 但不管你做什么,做到这一点始终

如果你没有很多失败的情况下,只是错误使用0。这是因为错误的测试都写在一个简单的方法:

if (!list_insert(...)) { handle_error; }

否则低于零的答案是好与正常答案> = 0可以使用该像列表长度,这在正常情况下不会是负的功能一起使用。或者,如果你想许多的错误代码(-1 - 不存在的,-2 - 没有发现,-3 ... ...)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top