errno变量的默认值

我想使用errno库来定义项目(c语言)函数的返回。 我想知道什么……

我会做这样的事情:

#include  int myfunction (void) { int res; /*Some actions....*/ if(success) res = 0; else if (fail) res = -EIO; return res; } 

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

谢谢你提前。

如果您的问题是默认值,没有错误,值是errno以及在errno中返回错误状态的所有函数,则该值为0如您所期望的那样。

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

没有将EGENERIC / EUNKNOWN值定义为某些常规错误指示符。

您有以下选择:

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

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


更新POSIX系统

如果要使用为errno定义的值,则没有可移植的方法来使用除0任何其他值,因为POSIX明确指出 :

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

* 1这是对Exyz宏的Exyz , 如下所示。