我正在浏览一些旧的C源代码,并且作者定义了一些错误代码枚举,其中包括ERROR(-1
)和SUCCESS(0
)。但是,在整个代码中,他们将约定!ERROR
用作函数的返回代码。
这大概与成功(0
)有关。
以前有人看过吗?对您来说有意义吗?
答案 0 :(得分:4)
使用零表示成功,使用负值(通常为-1
表示失败)是非常常见的约定。 Unix系统调用广泛使用此功能(有时使用非负数表示在例如返回文件描述符时成功)。
当然也有其他约定-OpenSSL使用不同的约定,例如:0
表示失败,而1
表示成功。这样的好处是您可以编写:
if (OpenSSL_API_Function(arg1, arg2, &arg3))
{
…continue on success;
}
使用!ERROR
而不是0
或SUCCESS
或OK
的情况较少。当然,这是正确的,因为任何非零值的逻辑取反为零。作者大概认为“ !ERROR
”类似于写“没有错误”,并且认为它比SUCCESS
或OK
更清晰。通常,为了娱乐而避免否定;会导致思维混乱。