Почему криптографические функции OpenSSL возвращают 1 при успехе, 0 при ошибке? - PullRequest
0 голосов
/ 09 октября 2018

Написание кода, использующего OpenSSL, и я заметил, что большинство функций крипто-библиотеки возвращают 1 для успеха и 0 для сбоя:

Поэтому мой вопрос: почему OpenSSL не использует типичный стандарт C / POSIX возвращаемые значения ?

1 Ответ

0 голосов
/ 09 октября 2018

Традиционно, в C целочисленное значение 0 обозначает false, а 1 обозначает true, и OpenSSL следует этому соглашению.См. этот раздел страницы Википедии о булевом типе данных для некоторого контекста:

Первоначальные реализации языка C (1972) не предоставили булева типа, и по сей день булевазначения обычно представлены целыми числами (целыми числами) в программах на Си.Операторы сравнения (>, == и т. Д.) Определены для возврата целочисленного (целого) результата со знаком, либо 0 (для false), либо 1 (для true).

Это несколько изменилосьс введением типа _Bool в C99, но первоначальная реализация OpenSSL предшествует этому - отсюда и использование целочисленных значений 0 и 1.Кроме того, в некоторых случаях функции OpenSSL используют разные целочисленные значения для обозначения разных типов результатов.

Ответ SO на возвращаемые значения, на которые вы указали , конкретно относится к особому случаю выходазначение процесса, которое будет возвращено его родителю.Действительно, для этой конкретной ситуации нулевое значение указывает на успех.Но это не типичный подход, применяемый к функциям, возвращающим значения в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...