为什么在错误名称之前添加连字符

时间:2012-10-31 10:19:57

标签: c

为什么返回标准错误值的函数在错误宏名称之前有一个连字符( - )?例如,我正在跟踪引导加载程序的代码,它是每个函数,例如:return -EINVAL

1 个答案:

答案 0 :(得分:4)

我想这会讨论Linux内核中的函数,这是我见过这种模式的地方。

在需要返回负int以表示失败并且想要使用宏的函数中会发生这种情况,但宏的值是正的。

因此,希望发出由于例如EINVAL会做

return -EINVAL;

因此,连字符只是一个前缀否定运算符,它将来自宏的正值转换为负值。

我猜周围的代码(系统调用机制)可以检测到这一点并将实际错误复制到errno,同时只返回用户呼叫的-1或其他内容。我还没有验证这一点,但作为一种简单的方法可以将错误代码的处理/传播与其生成隔离开来。