Использование errno для сообщения об ошибках приложения/библиотеки

Я пишу библиотеку C для программного проекта. Мне нужно сделать некоторые отчеты об ошибках, но я слишком ленив, чтобы реализовать свой собственный сложный набор кодов ошибок, переменных и функций. Допустимо ли использовать средство errno, предоставляемое libc, для пользовательских отчетов об ошибках? Все мои ошибки подпадают под категории, заданные макросами E... .

Например, предположим, что мой код включает функцию, которая считывает хэш SHA256 в шестнадцатеричной системе счисления и преобразует его в какой-то внутренний формат. Я хочу использовать errnoдля сообщения об ошибках:

#include <errno.h>

int hash_fromstr(hash_t *out, const char *in) {
  /* ... */

  if (strlen(in) != 65) {
    errno = EINVAL;
    return -1;
  }

  /* ... */
}

Конечно, этот пример смехотворно упрощен, на самом деле в других функциях может произойти гораздо больше ошибок.

12
задан fuz 14 May 2012 в 21:20
поделиться