errno变量的默认值

时间:2014-01-09 16:22:01

标签: c errno

我想使用errno库来定义项目(c语言)函数的返回。我想知道一些事情......

我会做这样的事情:

#include <errno.h>

int myfunction (void)
{
  int res;

  /*Some actions....*/

  if(success)
    res = 0;
  else if (fail)
    res = -EIO;

  return res;
 }

我喜欢始终初始化我的局部变量,我想知道使用errno值(可能是0)的变量的默认值是什么?但我真的不想默认设置:“SUCCESS”我更喜欢“失败”值。你对此有何看法(或规则)?

先谢谢。

2 个答案:

答案 0 :(得分:5)

如果您的问题是errno的默认值,没有错误值,以及errno中返回错误状态的所有函数,则该值为0,如您所愿。< / p>

但是错误代码通常不会作为负值返回给调用者,就像你在代码段中一样。

答案 1 :(得分:2)

没有将EGENERIC / EUNKNOWN值定义为一般错误指示符。

您有以下选择:

  • 保持乐观并将默认结果设置为0,表示成功。
  • 在为errno定义的值集合中使用特定于函数的默认值。
  • 如果errno返回负值,则使用1作为一般错误值。
  • 使用正{1}}值并使用errno作为常规错误指示符。
<击>

对于最后一个选项,还在函数内设置-1


POSIX系统更新

如果要使用为errno定义的值,除了POSIX explicitly states之外,没有可移植的方法可以使用除errno之外的任何其他值:

  

在程序中只应使用宏名称 * 1 ,因为未指定错误编号的实际值。

* 1此引用0宏,as listed here.