Как установить errno value?
у меня есть два вызова двух различных методов :
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
и второй способ :
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
когда я поставил
errno
к некоторому значению, что он делает ? просто проверка ошибок ?как я могу установить
errno
в вышеуказанных методовfunc1
иfunc2
toEEXIST
иENOENT
спасибо
3 ответов
для всех практических целей можно рассматривать errno
как глобальная переменная (хотя обычно это не так). Так что включайте!--2--> и просто использовать это:
errno = ENOENT;
вы должны спросить себя, если errno
является лучшим механизмом отчетности об ошибках для ваших целей. Можно ли сконструировать функции для возврата самого кода ошибки ?
ИМО, стандартный errno
предназначен для системного уровня. Мой опыт - не загрязнять их. Если вы хотите имитировать стандарт C errno
механизм, вы можете сделать некоторое определение, как:
/* your_errno.c */
__thread int g_your_error_code;
/* your_errno.h */
extern __thread int g_your_error_code
#define set_your_errno(err) (g_your_error_code = (err))
#define your_errno (g_your_error_code)
и вы все еще можете реализовать your_perror(err_code)
. Больше информации, пожалуйста см. glibc'ы.