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
, 如下所示。