c中存在的函数应该返回什么?

时间:2013-07-13 09:15:16

标签: c

我有一个函数可以告诉我资源是否存在。该函数是否应该返回0 on,1表示不存在,-1表示错误,或者它应该返回0表示存在而-1表示不存在/错误?

博多

3 个答案:

答案 0 :(得分:6)

如果函数被设计为布尔值,如is_file_present()之类的名称所示,它应该在资源存在时返回1,以便它可以在测试中使用,例如:

if (is_file_present(...))
    ... open file ...

if (!is_file_present(...))
    ... print an error ...

另一方面,如果函数的真实目的是它的副作用,并且其结果用于指示它们的成功,则可以为无错误情况返回0,并且在错误代码(例如-1)时返回0。有一个错误。例如:

if (create_resource(...) == 0)
    ... resource has been created ...
else
    ... handle error ...

对错误代码使用-1允许对返回项目数或索引的函数使用相同的错误约定。

答案 1 :(得分:0)

像其他人一样说它是关于风格的。您可以在不存在时返回0,在存在时返回1。此外,对于错误,您可以将错误或异常指针指针(**双星)参数添加到函数签名中以指示失败。它可以是一个简单的布尔或整数或包含有关失败的详细信息的结构。像错误代码和消息。这种模式在objective-c框架中发生了很多。另外AFAIK在c中没有异常堆栈,所以这种方法可能是最干净的方法。我想写一些示例代码,但我在移动设备上。我希望这会有所帮助。

答案 2 :(得分:0)

如果您的编译器不是很古老而且您可以使用C99标准,那么您可以使用标头stdbool.h并在资源存在时返回true,如果资源不存在则返回false存在。那是更清洁恕我直言。