我想这谈论的是 Linux 内核中的函数,这就是我看到这种模式的地方。
这发生在需要返回负数int
以表示失败并且想要使用宏但宏的值为正的函数中。
因此,希望由于例如而发出失败信号的代码EINVAL
将执行
return -EINVAL;
所以连字符只是一个前缀否定运算符,它将来自宏的正值变成负值。
我猜周围的代码(系统调用机制)然后可以检测到这一点并将实际错误复制到errno
同时返回-1
到用户的调用或其他东西。我还没有验证这一点,但作为一种将错误代码的处理/传播与错误代码的生成隔离开来的简单方法是有意义的。