为什么返回标准错误值的函数在错误宏名称之前有一个连字符( - )?例如,我正在跟踪引导加载程序的代码,它是每个函数,例如:return -EINVAL
答案 0 :(得分:4)
我想这会讨论Linux内核中的函数,这是我见过这种模式的地方。
在需要返回负int
以表示失败并且想要使用宏的函数中会发生这种情况,但宏的值是正的。
因此,希望发出由于例如EINVAL
会做
return -EINVAL;
因此,连字符只是一个前缀否定运算符,它将来自宏的正值转换为负值。
我猜周围的代码(系统调用机制)可以检测到这一点并将实际错误复制到errno
,同时只返回用户呼叫的-1
或其他内容。我还没有验证这一点,但作为一种简单的方法可以将错误代码的处理/传播与其生成隔离开来。