1

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

4

1 回答 1

4

我想这谈论的是 Linux 内核中的函数,这就是我看到这种模式的地方。

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

因此,希望由于例如而发出失败信号的代码EINVAL将执行

return -EINVAL;

所以连字符只是一个前缀否定运算符,它将来自宏的正值变成负值。

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

于 2012-10-31T10:22:30.007 回答