c - “!错误”返回代码约定在 C 中是否正常?
问题描述
我正在查看一些遗留的 C 源代码,作者定义了一些错误代码枚举,其中包括 ERROR ( -1
) 和 SUCCESS ( 0
)。然而,在整个代码中,他们使用约定!ERROR
作为函数的返回码。
这应该与 SUCCESS ( 0
) 有关。
有没有人见过这个?这对你有意义吗?
解决方案
使用零表示成功,使用负值通常-1
表示失败是一种非常常见的约定。Unix 系统调用广泛使用它(有时使用非负数表示成功,例如,返回文件描述符)。
当然还有其他约定——OpenSSL使用不同的约定,例如:0
表示失败和1
成功。这样做的好处是您可以编写:
if (OpenSSL_API_Function(arg1, arg2, &arg3))
{
…continue on success;
}
使用!ERROR
而不是0
或SUCCESS
或OK
不太常见。这当然没有错,因为任何非零值的逻辑否定都是零。作者大概认为 ' !ERROR
' 与写作 'no error' 相似,并认为它比SUCCESS
or更清楚OK
。一般来说,避免否定只是为了好玩;它可能导致复杂的思维。
推荐阅读
- python-3.x - 引发 exc.NoSuchModuleError(sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:postgresql
- node.js - Node.Js 中的示例单元测试
- hash - OpenSSL:如何“手动”获取 x509 -subject_hash?
- swiftui - 使用 Combine 和 SwiftUI 在 Realm 中观察收集结果
- google-apps-script - 使用 Google 表单时,如何获取此人的姓名,以便在用户提交表单后收到的确认电子邮件中使用它
- python - 在多个文件中传播 Python 项目 (MWE)
- python - Python数据框to_cvs()如何删除输出文本文件开头的选项卡
- python - Python将整数映射到另一个没有随机的“随机”整数
- reactjs - 未使用 fetch Api 获取数据
- javascript - 如何按多个字段对猫鼬进行排序?