在编写使用OpenSSL的代码之前,我注意到,令人困惑的是,大多数加密库函数对于成功返回1,对于失败返回0:
所以我的问题是,为什么OpenSSL不使用典型的C / POSIX标准return values?
答案 0 :(得分:2)
传统上,在C中,0
代表false
的整数值,1
代表true
的整数,OpenSSL遵循该约定。有关某些上下文,请参见this section of the Wikipedia page about the Boolean data type:
语言C(1972)的初始实现没有提供布尔值 类型,到目前为止,布尔值通常用 C程序中的整数(int)。比较运算符(>,==等) 定义为返回有符号整数(int)结果,或者为0(对于 false)或1(代表true)。
随着C99中引入_Bool
类型,这种情况已经有所改变,但是最初的实现OpenSSL早于此-因此使用0
和1
的整数值。另外,在某些情况下,OpenSSL函数使用不同的整数值来表示不同类型的结果。
SO answer on return values that you have pointed to特别涉及要返回到其父级的进程退出值的特殊情况。实际上,对于该特定情况,零值表示成功。但这通常不是应用于函数返回值的典型方法。