Я пишу библиотеку 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;
}
/* ... */
}
Конечно, этот пример до смешного упрощен, в действительности гораздо больше ошибок может произойти в других функциях.
errno
в других частях пользовательского приложения, связанного с вашей библиотекой, я не вижу в этом проблемы. Возможно, вы могли бы использовать переменнуюerrno
, но не изменять ее и не возвращать ее копию? - person Chimera   schedule 15.05.2012errno
для ошибок, которые возникают внутри самой библиотеки - не обязательно в функции libc, вызываемой библиотекой. - person fuz   schedule 15.05.2012errno
, чтобы сообщать об ошибках вызывающей стороне вашей библиотеки? В таком случае вы можете проверить stackoverflow.com/questions/9856822/should-i-set-errno < / а> - person Chimera   schedule 15.05.2012